我有这个免费的php脚本来跟踪下载统计信息。简单来说,它只计算下载量并将其传递给日志文件,另一个脚本使用该日志文件显示前10个列表。所以这正是我需要的,所以我真的想让这个脚本工作。但事实并非如此。当然。我对php的知识有限(但自从遇到这个脚本以来已经学到了很多东西!)。根据作者的说法,它已经在类似于我的Apache和php版本上进行了测试,没有任何问题。所以我一直犹豫要改变任何代码。我试图chmod日志文件和/或整个子目录到666和777没有成功。 我自己可怜的侦探工作无处可去,我真的很努力。所以我诉诸于我通常从未做过的一件事,就是寻求帮助。
链接的格式应为:
<a href=http://www.yoursite.com/downloader/download.php?number=1&file=filename.zip>
download.php如下:
$number = $_GET['number'];
$file = $_GET['file'];
$logfile = "ROOT DIRECTORY PATH/logfile.txt";
$array[dir_1] = "URL PATH/DOWNLOADFILESFOLDER";
$download = "dir"."_"."$number";
if ($array[$download]) {
$fp = fopen($logfile,'r');
while (!feof($fp))
{
$data[] = chop(fgets($fp,4096));
}
fclose($fp);
$fp = fopen($logfile,"w");
if (flock($fp,LOCK_EX)) {
// list and split each filename and number of downloads
foreach ($data as $lines){
list($downloads,$filename,$realname) = split("\|",$lines);
// check if file already exists and add one more download if it does
if ($filename == $file){
$downloads++;
}
if ($filename <> ""){
fputs($fp,"$downloads|$filename|$realname\r\n");
}
}
flock($fp,LOCK_UN);
}
fclose($fp);
header("Location: $array[$download]/$file");
}
然而,剧本的一部分对我来说没有意义;它在哪里获取文件名和真实姓名,以便如果以前从未下载过文件,可以将其放入日志文件中? list()函数和目录数组让我大吃一惊。虽然看似合乎逻辑。 如果有人发现了一些基本错误或者有关于我如何继续的一些提示,我们将非常感激。
PS。我试图跟踪pdf文件,如果这有帮助。
UPDATE!通过善意的建议我运行错误报告并收到错误。错误的脚本中有一个我删除的错误。我再次运行错误检查,只得到关于未定义变量的“Notices”。我将错误报告更改为
error_reporting(E_ALL ^ E_NOTICE);
之后,根本没有错误。
答案 0 :(得分:2)
你必须改变这些:
$logfile = "ROOT DIRECTORY PATH/logfile.txt";
$array[dir_1] = "URL PATH/DOWNLOADFILESFOLDER";
到你的实际路径。
下次打开错误报告,以便了解错误发生的时间。一种方法是在脚本顶部添加以下行:
error_reporting(-1) // will show all errors