PHP IF 工作不正确的情况

PHP condition with IF working incorrect

我有以下代码,当我上传名为 "abc.htaccess" 的文件时,它会通过显示 "attacked" 正常工作,但是当我上传 abc.php 或 abcphp 文件名,然后它告诉我文件已上传。 那么 if(false && true) (与上传 .php 文件相同)和 if(true && true) (与上传 .htaccess 文件相同)的条件是什么。

<!DOCTYPE html>
<html>
<body>
    <form action="" method="post" enctype="multipart/form-data">
        Select image to upload: <input type="file" name="fileToUpload" id="fileToUpload"><input type="submit" value="Upload Image" name="submit">
    </form>
    <br />
    <br />
    <?php
        $target_dir = "./";
        $target_file =  $target_dir . $_FILES["fileToUpload"]["name"];

        echo "Filename: " . $_FILES["fileToUpload"]["name"];
        var_dump(strpos(strtolower($_FILES["fileToUpload"]["name"]),"php"));
        var_dump(strpos(strtolower($_FILES["fileToUpload"]["name"]), "htaccess"));

        if(1==1 && 1==2){
            echo "Condition test: 1==1 && 1==2";
        }
        if(1==1 && 2==2){
            echo "Condition test: 1==1 && 2==2";
        }

        if((strpos(strtolower($_FILES["fileToUpload"]["name"]),"php") == false) && (strpos(strtolower($_FILES["fileToUpload"]["name"]), "htaccess") == false)){
            if(isset($_POST["submit"])) {
                move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $target_file);
                echo "Uploaded file: <a href='http://" .$_SERVER['SERVER_NAME'] . "/" . $_FILES["fileToUpload"]["name"] . "' target='_blank'>" . $_FILES["fileToUpload" . "</a>";
                echo "File uploaded";
            }
        }else{echo "attacked";}
    ?>

2次上传结果如下:

<pre>
    1st:
        Filename: phpminiadmin.phpint(0)
        bool(false)
        Condition: 1==1 && 2==2Uploaded file: <a href="http://domain.com/phpminiadmin.php" target="_blank">phpminiadmin.php</a>

    2nd:
        Filename: desktop.htaccessbool(false)
        int(8)
        Condition: 1==1 && 2==2attacked
</pre>

您的代码在评估文件 "phpminiadmin.php" 的字符串位置时返回 0,因此“==”将其解释为 FALSE。

例如尝试使用文件名 "aphpminiadmin.php"。然后您的代码将正常工作,因为 strpos returns a 1 显然不是 false.

因此,MonkeyZeus 建议的更改将解决此问题。

MonkeyZeus - 希望您不介意我搭讪您的回答。 '只是觉得这个例子更清楚地说明了问题。