首页 > 解决方案 > 登录系统中的 if() 语句无法正常工作

问题描述

该代码仅在我尝试使用错误密码登录时才有效。但是当我尝试使用真实密码登录时,它会:

A)不回显这 4 行:

        echo $email . "<br>";
        echo $password . "<br>";
        echo $dbemail . "<br>";
        echo $dbpassword; // This is hash, and echoed for testing purposes

B) 不跳转到 index.phpheader()

截图:使用错误密码登录 使用错误密码登录
截图:使用真实密码登录 使用真实密码登录

它的 50 行代码:

<?php  
if(isset($_POST['login_button'])) {

        $email = strtolower($_POST['log_email']);
        $email = filter_var($email, FILTER_SANITIZE_EMAIL); //sanitize email
        $_SESSION['log_email'] = $email; //Store email into session variable 
        $password = $_POST['log_password'];
        $check_database_query = mysqli_query($con, "SELECT * FROM users WHERE email='$email'");
        $login_row = mysqli_fetch_array($check_database_query);
        $dbemail = $login_row['email'];
        $dbpassword = $login_row['password'];
                //Echo $email, $password, $dbemail, $dbpassword
        echo $email . "<br>";
        echo $password . "<br>";
        echo $dbemail . "<br>";
        echo $dbpassword; // This is hash, and echoed for testing purposes
        $check_login_query = mysqli_num_rows($check_database_query);
        $row = mysqli_fetch_array($check_database_query);   
            if($check_login_query == 1){
                if(password_verify($password, $dbpassword) == true) {
                        $username = $row['username'];
                        $user_closed_query = mysqli_query($con, "SELECT * FROM users WHERE email='$email' AND user_closed='yes'");
                                    
                        if(mysqli_num_rows($user_closed_query) == 1) {
                            $reopen_account = mysqli_query($con, "UPDATE users SET user_closed='no' WHERE email='$email'");
                        }
                        $_SESSION['username'] = $username;

                                    //Be logged in after some time
                                    if(isset($_POST['check_box'])) {
                                        setcookie('email', $email, time() + 86400, "/");
                                        setcookie('password', $password, time() + 86400, "/");
                                        }
                                        $check_login_query = "";
                // Go to index
                echo "redicerting to index...";
                header("location: index.php");
                    exit();
                }
            else {
                array_push($error_array, "<span class='error'>Email or password not working</span><br>");
            }
    }
    else{
    array_push($error_array, "<span class='error'>Email or password not working</span><br>");
    }
}else{
    echo "Login button not POSTed";
}
?>

//我的表格


    <form action="register.php" accept-charset="utf-8" method="POST">
        <div id="login_wrapper">
        <label for="email">Your e-mail</label><br>
        <label id="error_email" style="color: red;"></label>
            <input type="text" id="email" name="log_email" value="<?php
                        if(isset($_SESSION['log_email'])) {
                        echo $_SESSION['log_email'];
                        }
                        ?>" required>
                                <br>
        <label for="password">Password</label><br>
                                    <input type="password" id="password" accept-charset="utf-8" name="log_password" required>
                                <br>
                            <?php if(in_array("<span class='error'>Email or password not working</span><br>", $error_array)) echo  "<span class='error'>Email or password not working</span><br>"; ?>
                        <input type="submit" name="login_button" value="Login">
                        <input type="checkbox" name="check_box">Remember me<br>
                    <br>
                <a href="#" id="signup" class="signup">Dont have an accout? Sign Up!</a>
        </div>
    </form>

日志来自error.log

[Mon Jan 21 15:22:44.064393 2019] [php7:notice] [pid 11540:tid 1960] [client ::1:61860] PHP Notice:  Undefined variable: userLoggedIn in C:\\xampp\\htdocs\\drope\\index.php on line 70
[Mon Jan 21 15:43:43.163934 2019] [php7:crit] [pid 11540:tid 1960] [client ::1:63802] PHP Parse error:  syntax error, unexpected 'if' (T_IF) in C:\\xampp\\htdocs\\drope\\includes\\form_handlers\\login_handler.php on line 4

也许我写得不好if()或者我的代码有错误,但我没有看到任何错误。
这也安全吗?或者我怎样才能提高安全性?也许不在 cookie 中存储哈希,但我如何在清除$_SESSIONs 后让用户保持登录状态?
//注意:问题不在 session_start 中,我已经开始了会话。

标签: php

解决方案


文件好像有问题index.php。它似乎将您重定向回register.php


推荐阅读