php - 登录后无法查看页面

标签 php mysql

当我进入输入验证码的页面时,它会要求我先登录,然后再登录。问题是我登录后它没有进入想要进入的页面,之后再次单击同一页面它要求我再次登录。我是不是做错什么了!?

登录信息.php

<div class="container">
<div class="row">
    <di class="col-md-4 col-md-offset-4">
        <fieldset>
            <legend>Login </legend>
            <form method="post" action="loginProcess.php">
              <div class="form-group">
              <label>User name:</label>
               <input type="text" name="username" class="form-control" required>
              </div>
              <div class="form-group">
                <label>Password:</label><input type="password" name="password" class="form-control" required>
              </div>
              <div class="form-group">
               <input type="submit" name="submit" value="Login" class="btn btn-default pull-right">
            </div>
            </form>
            </fieldset>
    </di>
</div>

登录进程.php

<?php
session_start();
include ("dbCon.php");


    $username = filter_has_var(INPUT_POST, 'username') ? $_POST['username']: null;
    $passWD  = filter_has_var(INPUT_POST, 'password') ? $_POST['password']: null;

        $sql = "SELECT passwordHash FROM te_users WHERE username = ?"; 
        $stmt = mysqli_prepare($conn, $sql);    

        mysqli_stmt_bind_param($stmt, "s", $username);  
        mysqli_stmt_execute($stmt); 
        mysqli_stmt_bind_result($stmt, $passWDHash); //Get the password hash from the query results for the given username and store it in the variable indicated

        if(!empty($username)){
            if(!empty($passWD)){
                if (mysqli_stmt_fetch($stmt)) { //Check if a record was returned by the query.
                    if (password_verify($passWD,$passWDHash)){
                        $username = $_SESSION['username'];
                        $login = $_SESSION['login'];
                        $_SESSION['login'] = true;
                        header("location:index.php");
                    }
                    else
                    {
                        echo "<p>Sorry, we don't seem to have that password.</p>";
                    }
                }
                else {
                    echo "<p>Sorry, we don't seem to have that username.</p>";
                }
            }
            else {
                echo "<p>Please enter the password.</p>";
            }   
        }
        else {
            echo "<p>Please enter the username.</p>";
        }   


    mysqli_stmt_close($stmt); 
    mysqli_close($conn); 

?>

otherpage.php

这是用于身份验证的代码

if( empty($_SESSION['logged_in']) )
{
     header('Location:login.php');
        exit;
}
else
{

}

最佳答案

您在注册成功登录的部分中做的事情是错误的,并且还设置了与您在他们登录时检查的变量名不同的 $SESSION 变量名代码。

                if (password_verify($passWD,$passWDHash)){

                    //$username = $_SESSION['username'];
                    //$login = $_SESSION['login'];
                    //$_SESSION['login'] = true;

                    $_SESSION['username'] = $username;
                    $_SESSION['logged_in'] = true;

                    header("location:index.php");
                } else {
                    echo "<p>Sorry, we don't seem to have that password.</p>";
                }

还记得在任何想要使用 session 的脚本中启动 session

<?php
session_start();

if( empty($_SESSION['logged_in']) ) {
    header('Location:login.php');
    exit;
} else {

}

关于php - 登录后无法查看页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40819665/

相关文章:

php - 重建后文件更改未反射(reflect)在Docker镜像中

mysql - 在 MySql 中删除除一个表之外的所有表

mysql - 请推荐MySQL Profiler(最好是免费的)

php - "Column count doesn' t match value count at row 1”当我尝试上传超过 1 行时出现错误。(CSV 文件到 MySQL 数据库)

php - 在 MySQL (PHP) 中插入 CURDATE() 和 CURTIME()

php - 使用 php 连接数据库时出现未定义的属性错误

php - 将多个php代码条件转换为SQL命令

PHP MySQL JQuery 表单无法在客户端验证

sql - 添加字段以优化 MySQL 查询

php - 出现任何错误时停止并返回 Json 响应