【发布时间】:2010-08-30 21:43:05
【问题描述】:
我得到了这个免费的 php 脚本来跟踪下载统计信息。真的很简单,它只是计算下载量并将其传递到日志文件,另一个脚本使用该日志文件显示前 10 名列表。所以这正是我需要的,所以我真的很想让这个脚本工作。但事实并非如此。当然。我对 php 的了解有限(但自从遇到这个脚本以来学到了很多东西!)。据作者说,它已经在类似于我的 Apache 和 php 版本上进行了测试,没有问题。所以我一直犹豫要不要真正改变任何代码。我试图将日志文件和/或整个子目录更改为 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 文件。
更新!通过善意的建议,我运行了错误报告并得到了一个错误。错误的脚本中有一个错误,我将其删除。我再次运行错误检查,只得到关于未定义变量的“通知”。我把报错改成
error_reporting(E_ALL ^ E_NOTICE);
之后,就没有任何错误了。
【问题讨论】:
-
您在实施过程中是否真的将“ROOT DIRECTORY PATH”和“URL PATH”更改为您的?