尽管我已经搜索和论坛,但我无法获得 session 变量以继续下一页。
每个页面都有session_start()
。每个 header 后面都有 exit()
。
如果我添加一个新成员,SESSION 变量就可以了。 但是当我登录时,SESSION 变量在登录后丢失。
这是登录页面的代码。除了 SESSION 变量无法解析到下一页之外,一切正常。我缺少什么? 哦,代码有点乱,有点像我的工作站。
<?php
session_start();
//Connection to DB in the usual way with check to DB
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];
//hacking protection in the usual way
$sql = "SELECT * FROM table WHERE `u_password` = '$mypassword' AND `user` = '$myusername' ";
$result = mysqli_query($mdb, $sql);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$count = mysqli_num_rows($result);
$ls = "Online";
$datenow = date("Y-m-d H:i:s");
$id = $row['id'];
$usql = "UPDATE addnewmbr SET loggedstatus = '$ls', logindate = '$datenow' WHERE id = '$id'";
if (mysqli_query($mdb, $usql)) {
$_SESSION["user_id"] = $row['id']; //this variable is lost on next page
$_SESSION["user"] = $row['user']; //this variable is lost on next page
$_SESSION["gender"] = $row['gender']; //this variable is lost on next page
if ($_SESSION['gender'] == "man") {
header('Location: newpage.php');
exit(); // the redirection $_SESSION['gender'] works so the variable is set
} else {
header('Location: anotherpage.php');
exit();
}
} else {
header('Location: back to indexpage.html');
exit();
}
?>
anotherpage.php
<?php
session_start();
echo $_SESSION["user"];
?>
测试页面上 Vardump 后此页面上的结果
array(0) { }
最佳答案
除了容易受到 SQL 注入(inject)攻击之外(可以通过准备语句、绑定(bind)值并执行来预防)
为什么将 $_SESSION["user"]
设置为等于 $row['user']
而不是 $myusername
?
在这种情况下,它们是相同的,因为您获取 user = $myusername
的行
不确定这是否能解决任何问题。
关于php - SESSION 变量不会继续到下一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37690109/