即使我搜索过了论坛,但我没有获得会话变量来继续下一页。
每个页面都有session_start()
。每个标题后面都有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) { }
答案 0 :(得分:0)
除了您容易受到SQL注入攻击(通过准备语句,绑定值并执行它们可以预防)
为什么将$_SESSION["user"]
设为$row['user']
而不是$myusername
?
在这种情况下,它们是相同的,因为您获取user = $myusername
行
不确定是否能解决任何问题。
答案 1 :(得分:0)
毕竟这是一个简单的解决方案......对于那些被SESSION变量丢失的人而言!
标题上的要小心.....从标题中删除www
e.g。 会话问题 标题('Location:http://www.website.php'); 会话修复 标题('位置:http://website.php');
这就是它的全部内容。