从$ _SESSION

时间:2015-05-11 23:23:14

标签: php mysql

我试图让我的用户的用户名回显,但只看到userID,或者如果我尝试回显用户名,它会给我字符串长度而不是实际名称。

我在我的会话脚本中调用我的标题,该标题包含在所有页面中:

    <?
session_start();
session_regenerate_id();
$_SESSION['username']=$email;
 include ('../db_con.php');
?>
在header.php文件中的

我想回显用户名,但当我尝试显示长度而不是实际名称时,不是如上所述:

            <?php echo $_SESSION['username']; 
            var_dump($_SESSION);
        ?>

会话从我的登录脚本开始:

<?
session_start();
if(isset($_SESSION['user'])){
    header("Location:home.php");
    exit;
}


    $dbh=new PDO('mysql:dbname=dashboardr;host=localhost', '******', '******');/*Change The Credentials to connect to database.*/
    $email=$_POST['username'];
    $password=$_POST['pass'];

    if(isset($_POST) && $email!='' && $password!=''){
        $sql=$dbh->prepare("SELECT id,password,psalt FROM user_login WHERE username=?");
        $sql->execute(array($email));

    while($r=$sql->fetch()){
        $p=$r['password'];
        $p_salt=$r['psalt'];
        $id=$r['id'];
    }

        $site_salt="subinsblogsalt"; /*Common Salt used for password storing on site. You can't change it. If you want to change it, change it when you register a user.*/
        $salted_hash = hash('sha256',$password.$site_salt.$p_salt);

    if($p==$salted_hash){
        $_SESSION['user']=$id;
  $_SESSION['username']=$email;

        header("Location:home.php");

    }else{
        echo "<h2>Username/Password is Incorrect.</h2>";
        }
    }
?>

1 个答案:

答案 0 :(得分:1)

您在以下位置未看到用户名的原因:

$_SESSION['username']

是因为你从未把它放在那里。

您需要将用户名分配给会话,如下所示:

$_SESSION['username']=$email;

然后您可以echo $_SESSION['username'];在任何地方显示用户名。

确保在任何输出前使用session_start();会话的任何页面。