如何从php打印存储在会话中的数据?

时间:2013-11-27 13:43:52

标签: php session login

用户登录后,会将其重定向到其个人资料页面。在该个人资料页面中,他们将能够看到他们的用户名,以及与该帐户相关联的电子邮件,如果其他人访问他们的个人资料,他们就可以看到该联系信息。

public function Login($username, $password){
    if(!empty($username) && !empty($password)){

        $stmt = $this->db->prepare("SELECT username, password, email FROM users WHERE BINARY username = ? AND BINARY password = ?");
        $stmt->bindParam(1,$username);
        $stmt->bindParam(2,$password);
        $stmt->execute();

        if($stmt->rowCount() == 1){
            $_SESSION["username"] = $username;
            $email = $stmt->fetchColumn(4);
            $_SESSION["email"] = $email;
            header('Location: http://www.mywebsite.com/dev/profile.php');
        }else{
            echo "Incorrect username or password please try again.";
        }               
    }else{
        echo "Must type a username and password to login.";
     }      
   }
}//End of login function

这是执行登录的功能,它应该设置会话,现在只有用户名会话实际打印在配置文件中,电子邮件不会显示。

<?php echo '<h1>'.htmlentities($_SESSION["username"]).'</h1>'; ?>
<?php echo '<h1>'.htmlentities($_SESSION["email"]).'</h1>'; ?>

这就是我打印会话的方式,就像我之前所说的那样,只有用户名被打印出来我才有想法,我做错了什么?

3 个答案:

答案 0 :(得分:0)

在你的php代码中启动php会话

<?php session_start(); ?>

然后在会话数组中设置值。

答案 1 :(得分:0)

您可以这样打印会话变量 -

<?php

session_start();

$NAME=$_SESSION['l_id'];

echo "Name is ".$NAME;
?>

答案 2 :(得分:0)

问题可能出在fetchColumn方法的参数中。试试这个:

$email = $stmt->fetchColumn(2);