会话第一次不工作,从第二次起作用
问题描述:
我不知道是什么问题。当我在删除所有历史记录和Cookie以及缓存后第一次登录时,它不会将会话设置为重定向页面。但是当我第二次登录时,会话被设置为重定向页面。这里是第一页&第二页的代码。会话第一次不工作,从第二次起作用
首页
<?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;
?>
答
,而不是回声使用
header("Location: index.php");
编辑
也session_start
应在第一页的顶部声明,因为你不能设置,如果你是在一个控制台环境中运行它不会在上下文存在,您会收到以下错误 "$_SESSION['user_id'] does not exist in the current context"
+0
仍然有这个问题。但我注意到,在不同的服务器和本地主机上它正在工作。 –
答
会话session_start();应该在两个脚本的最顶端!
会话变量保存在服务器上,并分配一个唯一的代码,通过cookie传递给浏览器。
由于饼干由标头设置,他们需要先发送其他东西!
即使脚本顶部的空格也可能导致会话cookie在浏览器端无法正确设置。
所以始终启动这两个脚本是这样的:
<?php
session_start();
// Rest of the code....
看起来他们是在对你的问题上面,但是我觉得你编辑的问题后放在那里。
这是会议第一次不能正常工作的唯一原因,他们正在第二次工作。
等待。 'mysqli_query()'在创建连接之前?另外,SQL容易受到SQL注入的影响。 – Raptor
你的首页也需要一个'session_start()',最好是你第一次打电话。如果不先调用session_start(),你不能/不应该访问'$ _SESSION'。 – Kalkran
是的,它在第一页,抱歉忘了提及。在session_start();在第一页&页面顶部 –