$ _post无法处理上传表单

时间:2013-11-19 02:54:33

标签: php html forms post upload

我有这个上传表单:

        <form action="upload.php" enctype="multipart/form-data" method="post">
            <b>Select your image:</b><br><input type="file" name="userfile" id="file" size="90%" /><br>
            (Max size: 10mb)<br>
            <b>Browseable:</b><br><input type="radio" name="browse" id="browse" value="1" /> Yes <input type="radio" name="browse" id="browse" value="0" /> No<br>
            <input type="submit" value="Upload Image" size="100" />
        </form>

这个PHP代码:

    <?PHP
    $maxsize = 10485760; // Max File Size IN BYtes
    $accepted = array('png', 'jpg', 'jpeg','JPEG', 'gif', 'ico', 'tif', 'bmp', 'PNG');
    $length = 10;
    $randomString = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length);

    if($_SERVER['REQUEST_METHOD'] == 'POST') {

        preg_match('/\.([a-zA-Z]+?)$/', $_FILES['userfile']['name'], $matches);

        if(in_array(strtolower($matches[1]), $accepted)) {

            if($_FILES['userfile']['size'] <= $maxsize) {

                $newname = md5_file($_FILES['userfile']['tmp_name']).'.'.$matches[1];

                $browse = $_POST["browse"];

                if ($browse = "1") {
                $filedir = 'img';
                } else {
                $filedir = 'noimg';
                }

                move_uploaded_file($_FILES['userfile']['tmp_name'], $filedir.'/'.$newname);

                header("Location: index.php?p=uploaded&img=$newname");
            } else 
                header("Location: index.php?p=error&num=2");
        } else
        header("Location: index.php?p=error&num=1");
    }
    ?>  

$ _POST [“browse”]之后的部分无效。此脚本的目的是将图像放在上载后的公共文件夹或私有文件夹中。我也很好奇这个上传脚本是否安全。

3 个答案:

答案 0 :(得分:1)

您有作业运算符(=)而不是比较(=====

if ($browse == "1") {  // or $browse === 1 or $browse == 1
    $filedir = 'img';
} else {
    $filedir = 'noimg';
}

答案 1 :(得分:1)

我假设The portion after $_POST["browse"] is not working.表示真正的块总是被触发?如果是,请将if ($browse = "1")更改为if ($browse == "1")。您的if语句正在检查$browse是否可以分配值1,而不是等于1。

答案 2 :(得分:0)

if ($browse = "1") {

您正在为$ browse ...分配1&gt;&gt; “==”!

然后做:

$res = move_uploaded_file($_FILES['userfile']['tmp_name'], $filedir.'/'.$newname);
var_dump($res);
die;

看看发生了什么:)