簡體   English   中英

在 PHP 中似乎忽略了 Else 語句

[英]Else statement seems to be ignored in PHP

我正在創建登錄名,但遇到了問題。 如果用戶輸入不正確的用戶名和/或密碼,我希望出現錯誤消息,特別是如果兩者與數據庫中的內容不匹配,用戶將被提示他們輸入了錯誤的用戶名/密碼。

似乎每當我運行代碼時,我的 else 語句都會被忽略。 我的 if 語句有效,我已經測試過了。 但是無論我在 else 子句中回顯什么,都不會被訪問。 我試過重構與 php 相關的 js,我試過 Stack Overflow 解決類似問題的解決方案無濟於事。 我已經通過單步執行測試了代碼,當 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" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM