会话第一次不起作用,从第二次开始工作


Session not working for first time, from second time it works

我不知道是什么问题。当我在删除所有历史记录和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;这开始处理第三个请求...