我不知道是什么问题。当我在删除所有历史记录和cookie和缓存后首次登录时,它不会将会话设置为重定向页面。但是当我第二次登录时,会话设置为重定向页面。这里id是第一页和第二页的代码。
第一页
<?php
session_start();
include('includes/connection.php');
$email=$_POST['email'];
$password=$_POST['password'];
$data=mysqli_query($GLOBALS["___mysqli_ston"], "select * from user_registration where email='$email' and password='$password' ");
$data1=mysqli_num_rows($data);
$val=mysqli_fetch_array($data);
if($data1>0)
{
$_SESSION['user_id']=$val['user_id'];
echo "<script>window.location.href='index.php'</script>";
}
else
{
echo "<script>window.location.href='login.php'</script>";
}
?>
第二页
<?php
session_start();
$val=$_SESSION['user_id'];
echo $val;
?>
session_start(); 应该在两个脚本的最顶部!
会话变量保存在服务器上,并分配一个唯一的代码,该代码在 cookie 中传递给浏览器。
因为 cookie 是由标头设置的,所以它们需要先发送!
即使是脚本顶部的空格也可能导致浏览器端的会话 cookie 设置不正确。
因此,请始终像这样启动两个脚本:
<?php
session_start();
// Rest of the code....
看起来他们在你的问题上名列前茅,但我想你稍后编辑了问题放在那里。
这是会话第一次不起作用并且它们第二次工作的唯一原因。
而不是使用echo
header("Location: index.php");
编辑
此外,session_start
应在第一页的顶部声明,因为您无法设置上下文中不存在的会话 如果您在控制台环境中运行它,您将收到以下错误 "$_SESSION['user_id'] does not exist in the current context"
这里也发生了同样的事情。 PHP 5.6 是一个超级奇怪的问题。 在某些页面上工作正常,而在一个页面上则不工作。第一个请求就像没有得到认可一样。:)例如:设置#when 页面加载集:$_SESSION['a']=0;
带有 JS 请求 #then 增加 $_SESSION['a']+=1;这开始处理第三个请求...