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

问题描述:

我不知道是什么问题。当我在删除所有历史记录和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; 
?> 
+0

等待。 'mysqli_query()'在创建连接之前?另外,SQL容易受到SQL注入的影响。 – Raptor

+0

你的首页也需要一个'session_start()',最好是你第一次打电话。如果不先调用session_start(),你不能/不应该访问'$ _SESSION'。 – Kalkran

+0

是的,它在第一页,抱歉忘了提及。在session_start();在第一页&页面顶部 –

,而不是回声使用

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.... 

看起来他们是在对你的问题上面,但是我觉得你编辑的问题后放在那里。

这是会议第一次不能正常工作的唯一原因,他们正在第二次工作。