上传图像,验证无效

时间:2013-11-24 05:53:55

标签: php file-upload

我已经写了一个上传图片的脚本,上传有2个输入文件上传.. 我已经在php中进行了验证,以检查选择了哪个输入,这样如果没有选择图像,表格就不会更新为空白。

问题是,如果我同时选择两个图像,它会更新表格。但不会选择1。

代码:

if ($_FILES["path"]["size"] > 0 && $_FILES["path1"]["size"] < 0) {
    $allowedExts = array("jpg", "jpeg", "png");
    $extension = end(explode(".", $_FILES["path"]["name"]));
//echo $extension;
    if (($extension == "jpeg")
        || ($extension == "jpg")
        || ($extension == "png")
    ) {
        if ($_FILES["path"]["error"] > 0) {
            $msg = $_FILES["path"]["error"] . "<br />";
        } else {
            move_uploaded_file($_FILES["path"]["tmp_name"],
                "../images/" . $_FILES["path"]["name"]);
        }

        $filename = "images/" . $_FILES["path"]["name"];

///update query
    }
} else if ($_FILES["path"]["size"] < 0 && $_FILES["path1"]["size"] > 0) {
    $allowedExts = array("jpg", "jpeg", "png");
    $extension = end(explode(".", $_FILES["path1"]["name"]));
//echo $extension;
    if (($extension == "jpeg")
        || ($extension == "jpg")
        || ($extension == "png")
    ) {
        if ($_FILES["path1"]["error"] > 0) {
            $msg = $_FILES["path1"]["error"] . "<br />";
        } else {
            move_uploaded_file($_FILES["path1"]["tmp_name"],
                "../images/" . $_FILES["path1"]["name"]);
        }

        $filename1 = "images/" . $_FILES["path1"]["name"];

///update query
    }
} else if ($_FILES["path"]["size"] < 0 && $_FILES["path1"]["size"] < 0) {
} else if ($_FILES["path"]["size"] > 0 && $_FILES["path1"]["size"] > 0) {
    $allowedExts = array("jpg", "jpeg", "png");
    $extension = end(explode(".", $_FILES["path"]["name"]));
//echo $extension;
    if (($extension == "jpeg")
        || ($extension == "jpg")
        || ($extension == "png")
    ) {
        if ($_FILES["path"]["error"] > 0) {
            $msg = $_FILES["path"]["error"] . "<br />";
        } else {
            move_uploaded_file($_FILES["path"]["tmp_name"],
                "../images/" . $_FILES["path"]["name"]);
        }

        $filename = "images/" . $_FILES["path"]["name"];

        $allowedExtss = array("jpg", "jpeg", "png");
        $extensions = end(explode(".", $_FILES["path1"]["name"]));
//echo $extension;
        if (($extensions == "jpeg")
            || ($extensions == "jpg")
            || ($extensions == "png")
        ) {
            if ($_FILES["path1"]["error"] > 0) {
                $msgs = $_FILES["path1"]["error"] . "<br />";
            } else {
                move_uploaded_file($_FILES["path1"]["tmp_name"],
                    "../images/" . $_FILES["path1"]["name"]);
            }

            $filename1 = "images/" . $_FILES["path1"]["name"];
///update query

        }
        header("Location: index.php?p=setings");
        exit;

我检查过每一件事,但没有发现错误。

1 个答案:

答案 0 :(得分:1)

$_FILES["path1"]["size"] < 0的所有条件都是错误的。因为它可以是0或null或false但不小于0

您需要更改所有条件。

if ($_FILES["path"]["tmp_name"] != '' && $_FILES["path1"]["tmp_name"] == '') {

} else if ($_FILES["path"]["tmp_name"] == '' && $_FILES["path1"]["tmp_name"] != '') {

} else if ($_FILES["path"]["tmp_name"] == '' && $_FILES["path1"]["tmp_name"] == '') {

} else if ($_FILES["path"]["tmp_name"] != '' && $_FILES["path1"]["tmp_name"] != '') {

}

此程序还有很多冗余代码..请考虑下面的代码

if ($_FILES["path"]["tmp_name"] != '' || $_FILES["path1"]["tmp_name"] != '') {

    $allowedExts = array("jpg", "jpeg", "png");
    if ( $_FILES["path"]["tmp_name"] != '' ) {
        $extension = end(explode(".", $_FILES["path"]["name"]));

        if (($extension == "jpeg")
            || ($extension == "jpg")
            || ($extension == "png")
        ) {
            if ($_FILES["path"]["error"] > 0) {
                $msg = $_FILES["path"]["error"] . "<br />";
            } else {
                move_uploaded_file($_FILES["path"]["tmp_name"],
                    "../images/" . $_FILES["path"]["name"]);
            }

            $filename = "images/" . $_FILES["path"]["name"];
        }
    }

    if ( $_FILES["path1"]["tmp_name"] != '' ) { 
        $extensions = end(explode(".", $_FILES["path1"]["name"]));

        if (($extensions == "jpeg")
            || ($extensions == "jpg")
            || ($extensions == "png")
        ) {
            if ($_FILES["path1"]["error"] > 0) {
                $msgs = $_FILES["path1"]["error"] . "<br />";
            } else {
                move_uploaded_file($_FILES["path1"]["tmp_name"],
                    "../images/" . $_FILES["path1"]["name"]);
            }

            $filename1 = "images/" . $_FILES["path1"]["name"];
        }
    }

    header("Location: index.php?p=setings");
    exit;
} else {
    // no file
}