我正在使用会话变量将用户的详细信息从登录页面发送到欢迎页面。
这是我的代码:
<?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();在每一页上。
答案 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>