【发布时间】:2010-11-16 04:15:25
【问题描述】:
我有一个脚本,它从 $_GET['key'] 获取密钥,在数据库中查找位置,并使用 readfile 和一些标题来提供下载以供使用。这适用于 Firefox 但不适用于 IE8,无法在另一个 IE 上进行测试。我在 IE 中收到以下错误:“Internet Explorer 无法从 www.example.com 下载 download.php”。好像它正在尝试下载 PHP 脚本。
$the_query = "SELECT * FROM `files` WHERE `user_id`=" . $_SESSION['user_id'] . " AND `key`='" . $key . "'";
$result = mysql_query($the_query);
$row = mysql_fetch_array($result);
$file = '/var/www/vhosts/www.example.com/httpsdocs/uploads/' . $row['id'] . '/' . $row['file'];
header("Content-type: application/octet-stream");
header("Content-length: ".filesize($file));
header('Content-Description: File Transfer');
header("Cache-control: private");
header('Content-Disposition: attachment; filename=' . rawurlencode(basename($file)));
readfile($file);
【问题讨论】:
-
看看SQL注入和mysql_real_escape_string。这段代码很容易受到攻击。
-
天哪,是的,请使用mysql_real_escape_string
-
这个不太了解,不过可能跟$file中的文件扩展名有关
-
如果您的意思是在 $key 变量上,那么是的,我已经在使用它,只是不在上面的代码中。
标签: php http-headers