我正在尝试通过使用在上传过程中创建并分配给文件的文件令牌将文件从 SQL 推送到浏览器。但是我的 SELECT SQL 不适用于除文件 id 字段之外的任何其他内容,这是唯一似乎触发 SELECT 请求的字段是代码
$item = $_GET['item'];
$sql = 'SELECT * FROM `files` WHERE file_token = '.$item.'';
$result = mysql_query($sql);
if(!$result) {
echo '<div style="padding:8px;background-color:#fae3e3;border:2px solid #b25959;color:#313131;">Error!</div>';
} else {
while($obj = mysql_fetch_array($result)) {
$file_type = $obj['file_type'];
$file_size = $obj['file_size'];
$file_name = $obj['file_name'];
$file_hash = $obj['file_hash'];
$name = 'encrypted/'.$file_hash;
if (file_exists($name)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file_name));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($name));
ob_clean();
flush();
readfile($name);
exit;
}
}
}
mysql_query("UPDATE `files` SET file_views = file_views+1 WHERE file_token = '.$item.'");
mysql_close();
我的 SELECT 语句有问题吗?令牌在 SQL 中看起来像这样
示例:3ed3:3ba6:eb24:5816:6d8b:be06:79e1:b20b