PHP文件txt上传验证内容

时间:2013-12-23 18:25:16

标签: php file validation upload

我有一个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验证是有效的,但我想要文件txt内容验证。例, txt文件内容必须包含标题

example.txt中

#ADVANCED

#WIZARD

在txt文件上传到服务器之前,必须检查文件内容标题,第一行应该有#ADVANCED,第三行应该有#WIZARD,如果用户上传txt文件没有那样的标题或者空/空白文件应显示错误信息。

如何检查或验证文件上传的内容?

抱歉我的英文不好,谢谢:)

2 个答案:

答案 0 :(得分:1)

此处$line[0]是第1行,$line[2]是第3行。file()将整个文件读入数组。

$lines = file($myFile); //file lines into an array

if (strip($lines[0]) == '#ADVANCED' && strip($lines[2]) == '#WIZARD'){
//success
}

编辑(由@barmar建议)

strip()添加到变量$lines[0]$lines[2]以修剪/n字符。

答案 1 :(得分:0)

使用file功能。它会返回你txt-file的行数。

$lines = file($filename);
// Then you can check if 
if ($lines[0] == '#ADVANCED' && $lines[2] == '#WIZARD') {
    // do some stuff
}