为什么我的会话只从这个唯一的会话变量开始?

时间:2014-11-15 10:43:39

标签: php session

如果$ u和$ d匹配,则会话将注册。但是,如果我将$ d的字符串更改为其他任何内容,即使其他所有内容都通过,该会话也不会注册。我想在表用户中存储的用户全名下注册会话。有没有我没看到的东西?

<?php
        include('conn.php');
        $u = $_POST['user'];
        $p = md5($_POST['pass']);
        $sql = "SELECT first_name, last_name, user, pass FROM users WHERE user = :user AND pass = :pass";
            $q = $conn->prepare($sql);
            $q->bindParam(":user", $u);
            $q->bindParam(":pass", $p);
            $q->execute();
            $login = $q->fetch();
            $d = $login['user'];
            if($login['user']){
                session_start();
                $_SESSION['login_user']=$d;
                header('Location: index.php');

            }
            else{
                header('Location: login.php');
            }
?>

编辑:我编辑过以展示我的意思的更好的例子。如果我要将变量$ d更改为$ login ['first_name'],则会话将不会注册。尽管该信息在数据库中是正确的,因为它在index.php成功时会显示​​第一个名称。

1 个答案:

答案 0 :(得分:0)

在代码中,使用以下内容定义$d

$d = "user01";

以后再次使用它(一旦验证了用户名和密码):

$_SESSION['login_user']=$d;

如果要将保存的会话更改为用户全名,请将execcute语句更改为query语句并从数据库中返回该行。然后将具有用户姓名的列保存到会话中。

假设您将执行更改为查询 - 您可以使用以下内容:

$_SESSION['login_user']=$result['username'];