Else语句在PHP中似乎被忽略了

Else statement seems to be ignored in PHP

本文关键字:被忽略了 PHP 语句 Else      更新时间:2023-09-26

我正在创建一个登录,我遇到了一个问题。我想要一个错误消息出现,如果用户输入一个不正确的用户名和/或密码,特别是如果两者不匹配什么是在数据库中的用户将被提示,他们已经输入了一个不正确的用户名/密码。

似乎无论何时运行代码,else语句都会被忽略。我的if语句有效,我已经测试过了。但无论我在else子句中回显什么,它都不会被访问。我试过重组php绑定的js,我试过类似问题的堆栈溢出解决方案,但无济于事。我通过逐步测试代码,当if语句为真时,"sas"回显,当if不为真时(else)"。控制台上没有错误消息。也许我在这里尝试的逻辑有问题。

我使用Malsup的jQuery表单插件异步提交登录表单。我已经减少了一些不必要的(可能有更多我知道)html和js,但包括文件的良好措施。

PHP

    <?php
    $host     = "meh"; // Host name 
    $username = "blah"; // Mysql username 
    $password = "pft"; // Mysql password 
    $db_name  = "doh"; // Database name 
    $tbl_name = "leh"; // Table name 
    // Connect to server and select databse.
    $mysqli = new mysqli("$host", "$username", "$password", "$db_name");
    if ($mysqli->connect_errno) {
        echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }
    // username and password sent from form 
    $myusername = $_POST['myusername'];
    $mypassword = $_POST['mypassword'];
    // To protect MySQL injection
    $myusername = stripslashes($myusername);
    $mypassword = stripslashes($mypassword);
    $myusername = mysqli_real_escape_string($mysqli, $myusername);
    $mypassword = mysqli_real_escape_string($mysqli, $mypassword);
    $sql        = "SELECT FirstName, Password FROM $tbl_name WHERE FirstName= ? AND Password= ? ";
    //prepare and bind paramters
    if ($stmt = $mysqli->prepare($sql)) {
        $stmt->bind_param("ss", $myusername, $mypassword);
        $stmt->execute();
        $stmt->bind_result($returnedusername, $returnedpassword);
        //fetch $stmt results
        while ($stmt->fetch()) {
            if (isset($returnedusername) && isset($returnedpassword) && $returnedusername === $myusername && $returnedpassword === $mypassword) {
                session_register("myusername");
                session_register("mypassword");
                //header("location:login_success.php");
                echo "sas";
            } else {//I DONT THIS PART IS BEING RUN...NOT SURE THOUGH IF LOOKING AT WRONG PART OF CODE
                echo $_POST['loginError'];//loginError found in html, will be error message
            } 
        } //end while
    } //end if
    $stmt->close();
    $mysqli->close();
    ?>

JS

$('document').ready(function() { 
    var  loginForm = $("#form1");
    //Will load user's name into page heading (from local storage)
    function storeUsername() {
        window.alert("You made it in the function");//testing to see if code is run
        if (typeof(Storage) != "undefined") {
            // Store the user's first name as localStorage Object
            var inputUsername = document.getElementById("myusername");
            localStorage.username = inputUsername.value;
            window.alert(localStorage.username);
        }
    }
    var options = {
        target: '#loginError',
        beforeSubmit: beforeSubmit, // pre-submit callback 
        success: afterSuccess
    };
    //Submit form via ajax
    // bind to the form's submit event 
    $('#form1').submit(function() {
        // inside event callbacks 'this' is the DOM element so we first 
        // wrap it in a jQuery object and then invoke ajaxSubmit 
        $(this).ajaxSubmit(options);
        return false;
    });
    //after succesful upload
    function afterSuccess() {
        var flag = $("#loginError");
        var flagContents = flag.html();
        if (flagContents == "sas") {
            window.location.href = "login_success.php";
            //remove the imgPlaceHolder element
        } else {
            flag.fadeIn('slow');//error message will fade In
        }
    }
    function beforeSubmit() {
        //check whether browser fully supports all File API
        if (window.File && window.FileReader && window.FileList && window.Blob) {
            storeUsername();
        } else {
            //Output error to older unsupported browsers that doesn't support HTML5 File API
            alert("Please upgrade your browser, because your current browser lacks some new features we need!");
            return false;
        }
    }
}); 

HTML

<!DOCTYPE html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script src="../js/generalJS/modernizr.custom.js"></script>
    <script src="http://malsup.github.com/jquery.form.js"></script>
</head>
<body>
    <table width="100" border="0" cellpadding="0" cellspacing="1">
        <tr>
            <form name="form1" id="form1" method="post" action="checklogin.php">
                <td>
                    <table width="100%" border="0" cellpadding="3" cellspacing="1">
                        <tr>
                            <td colspan="3"><strong> Login </strong>
                            </td>
                        </tr>
                        <tr>
                            <td>Username:
                                <input name="myusername" type="text" id="myusername" required> </td>
                        </tr>
                        <tr>
                            <td>Password:
                                <input name="mypassword" type="password" id="mypassword" required>
                            </td>
                        </tr>
                        <input type="submit" id="mySubmit" name="Submit" value="Login"></input>
                        <div id="loginError" name="loginError" style="display:none" value="**Username or password incorrect**"></div>
                        <!--Php script will provide an error is login fails. It will get the outcome from checklogin, fetch reason from "password"-->
                    </table>
                </td>
            </form>
        </tr>
    </table>
</body>
<script type="text/javascript">
    function downloadJSOnload() {
        var element1 = document.createElement("script");
        element1.src = "../js/login.js";
        document.body.appendChild(element1);
    }
    if (window.addEventListener)
        window.addEventListener("load", downloadJSOnload, false);
    else if (window.attachEvent)
        window.attachEvent("onload", downloadJSOnload);
    else window.onload = downloadJSOnload;
</script>
</html>

这就是问题所在:

<div id="loginError" name="loginError" style="display:none" value="**Username or password incorrect**"></div>

改为:

<input id="loginError" name="loginError" style="display:none" value="**Username or password incorrect**" type="hidden" />