会话变量未存储在其他页面上

时间:2017-12-15 15:42:29

标签: php html mysql

我正在使用会话变量将用户的详细信息从登录页面发送到欢迎页面。

这是我的代码:

<?php   

 if(isset($_POST['login']))
 {



 $email=$_POST['email'];
 $pass=md5($_POST['password']);


 $a="SELECT * FROM users WHERE email='$email'AND password='$pass'";
 $log=mysqli_query($con,$a);
$row=mysqli_fetch_array($log);


if(mysqli_num_rows($log)>0){

 $_SESSION['firstname']=$row['first_name'];
$_SESSION['lastname']=$row['last_name'];


header("location:welcome.php");
exit;
}
else{

$er="login failed!";

 }
}

on Welcome.php

 <h2>WELCOME : <?php echo $_SESSION['firstname'];?></h2>  <--- line 63-->

但是我收到了这个错误:

  

注意:未定义的索引:firstname in   第63行的C:\ xampp \ htdocs \ website \ welcome.php

PS:请不要将其标记为重复我尝试了很多解决方案但没有帮助。我用了session_start();在每一页上。

2 个答案:

答案 0 :(得分:0)

编辑:这个答案不正确,我会在评论讨论结束后将其删除。

您获取$log的第一行,然后检查$log中的行数是否大于0.虽然您最初有一行,但您获取了它!因此,当您检查mysqli_num_rows($log)时,它将为0,因此从不设置$_SESSION['firstname']$_SESSION['lastname']

尝试在获取行之前检查条目数,如下所示:

$a="SELECT * FROM users WHERE email='$email'AND password='$pass'";
$log=mysqli_query($con,$a);

if(mysqli_num_rows($log)>0){


    $row=mysqli_fetch_array($log);

    $_SESSION['firstname']=$row['first_name'];
    $_SESSION['lastname']=$row['last_name'];


    header("location:welcome.php");
    exit;
}

答案 1 :(得分:0)

使用session_start()函数启动会话。

在第1页:

if(mysqli_num_rows($log)>0){


    $row=mysqli_fetch_array($log);
    session_start();
    $_SESSION['firstname']=$row['first_name'];
    $_SESSION['lastname']=$row['last_name'];

    if(isset($_SESSION['firstname']))  
        header("location:welcome.php");
    exit;
}
第2页的

:你可能在第一行写了这一行:

<?PHP 
  session_start();
 ?>
 <h2>WELCOME : <?php if(isset($_SESSION['firstname']))  {echo $_SESSION['firstname'];}?></h2>