【发布时间】:2023-04-05 00:32:02
【问题描述】:
我遇到了一个问题,即当您链接到另一个页面时,我的会话变量不会被记住。这听起来可能有点奇怪。为了澄清一点,我将用一些代码解释我的问题:
此代码是来自“Login.php”的 sn-p。在这里,我为 Email 和 wachtwoord(Password) 设置了 SESSION 变量。
$query = "SELECT * FROM user WHERE Email='$email' AND Wachtwoord='$Wachtwoord'";
$result = mysqli_query($connection, $query) or
die(mysqli_error($connection));
$count = mysqli_num_rows($result);
if ($count == 1){
session_start();
$_SESSION['email'] = $email;
$_SESSION['wachtwoord'] = $Wachtwoord;
$sql = "UPDATE user SET Ingelogd = 1 WHERE Email='$email'";
$ressql = mysqli_query($connection, $sql) or
die(mysqli_error($connection));
}else{
echo "Invalid Login Credentials.";
}
在这个 sn-p 中,电子邮件和 wachtwoord 会话设置正确(我相信,因为我可以回显这些并获得正确的输出)
但是当用户被重定向到包含这个php代码的chat.php时(间接地,这个代码在'LoginCheck.php'中。链接到:Include('../Php/LoginCheck.php');):
Include('connect.php');
//IF ((! $_SESSION['email']= NULL)&&(! $_SESSION['wachtwoord']=NULL)){
$email = $_SESSION['email'];
echo $_SESSION['email'];
$Wachtwoord = $_SESSION['wachtwoord'];
echo $_SESSION['wachtwoord'];
echo 'something';
$sql = "SELECT * FROM user WHERE Email='$email' and Wachtwoord='$Wachtwoord' and Ingelogd=1";
$result = mysqli_query($connection,$sql) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);
if (!$count == 1){
//header('Location: Login.php');
}
//}
当 php 尝试使用 SESSION var 做某事时,它会给出以下错误: 未定义变量:第 4 行 F:\xampp\htdocs\Chives-Functional\Php\LoginCheck.php 中的 _SESSION 声明 $email 的行。
我要检查的是用户是否仍然登录。 我怎样才能让它工作?我究竟做错了什么?为什么不记得了? 提前致谢,感谢您的帮助!
亲切的问候,
附言。如果需要更多信息,请随时询问!
【问题讨论】:
-
您需要在每个页面上调用
session_start(); -
你打电话给
session_start()了吗? -
在 LoginCheck 的开头添加
session_start()。它开始或恢复会话。 -
你是对的,对不起,我不知道
-
您的查询不安全。它容易受到 SQL 注入的攻击。您应该考虑使用
mysqli_real_escape_string转义查询变量