【发布时间】:2014-01-12 00:00:38
【问题描述】:
我写了一个 PHP 脚本来上传一个 .txt 文件,它可以部分工作:
<?php
$allowedExts = array("txt");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
$dest = "/etc/squid/squid.conf";
if ((($_FILES["file"]["type"] == "text/plain")
&& ($_FILES["file"]["size"] < 170000)
&& in_array($extension, $allowedExts)))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "<div style='text-align: center'>";
echo "Upload File Success!!<br><br>";
echo "FIle : " . $_FILES["file"]["name"] . "<br>";
echo "Type : " . $_FILES["file"]["type"] . "<br>";
echo "Size : " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "</div>";
move_uploaded_file($_FILES["file"]["tmp_name"],
"/var/www/squid_proxy/upload/" . $_FILES["file"]["name"]);
copy("/var/www/squid_proxy/upload/" . $_FILES["file"]["name"],
$dest);
}
}
else
{
echo "<div style='text-align: center'>";
echo "Error, File upload only .txt";
echo "</div>";
}
?>
文件类型和 MIME 验证都运行良好,但我想要验证文件的内容。该文件由标题构成。看这个例子:
#ADVANCED
#WIZARD
在文件上传到服务器之前,必须检查文件在第一行包含#ADVANCED,在第三行包含#WIZARD。
如果缺少标头或文件为空,则应显示错误消息。
如何验证上传文件的内容?
【问题讨论】:
标签: php file validation upload