2014-10-10 44 views
0

我有一个非常奇怪的问题与PHP会话功能。整个网站没有保存会话

首先:它只适用于某些浏览器。像随机选择:在Windows上的FF,但不是在Mac上,在两个平台上的Chrome浏览器,safari不工作IE然而。

我有一个登录脚本,如果登录数据是正确的,我创建一个会话:

session_start(); 
$_SESSION['username'] = $user_info['username']; 

echo "<pre>"; 
print_r($_SESSION); 
echo "</pre>"; 

当我在登录脚本中的print_r,设置会话变量后,它适用于所有浏览器。但是,将用户重定向到主网站后,会话是空的一些浏览器....

我从未有过这样的问题,我真的不知道该怎么办...

+0

当您说“将用户重定向到主网站“,这是一个不同的网站?你如何重定向他们? – 2014-10-10 10:18:53

+1

它不完全清楚你要求什么。你是否用'session_start();'开始每一页? – Dorvalla 2014-10-10 10:20:43

+0

当然是的。而它的域名和服务器相同,甚至不是子域名,对于没有澄清这一点抱歉抱歉。 – 2014-10-10 10:22:14

回答

1
session_start(); 
$_SESSION['username'] = $user_info['username']; 

echo "<pre>"; 
print_r($_SESSION); 
echo "</pre>"; 

如果这是什么开始每一页,我可以理解你刷新后没有看到任何东西了,原因很简单,你做什么是你开始你的会话,你设置$ _SESSION变量用户名$ User_info变量用户名。而且你每次都这样做。

但是考虑一下:在这一点上你的变量没有被指定。也许你在登录时设置它,但是,在下一次刷新时你会清除它,因为你再次使用$ user_info ['username']来告诉它。在这种情况下,没有任何东西需要调用,它将是一个空变量。因此,你的用户名将是空白的。

您的会话['用户名']也将为空,因为您告诉它会采取该信息。

既然你设置它,当你登录,没有必要respecify它,导致会话[“用户名”]已经设置

编辑

,所以我现在要问,是什么做你把你的数据库?你是否将SessionId保存在数据库中?因此,你可以做出这样的事情。

session_start(); 

$Session=session_id(); 
$result1 = LoadSessionData($Session); 
$count=mysqli_num_rows($result1); 
if($count=="0"){ 
    $Time=time(); 
    $Ip = $_SERVER['REMOTE_ADDR']; 
    StartSessionData($Session,$Time,$Ip); 
    $_SESSION['Username'] = ''; 
}else{ 
    while ($row1 = mysqli_fetch_array($result1)){  
     $UserName = $row1['GebruikerNaam']; 
     if ($UserName == ""){ 
      $_SESSION['Username'] = ''; 
     } 
     $Time=time(); 
     $Time_check=$Time-3600; 
     $Ip = $_SERVER['REMOTE_ADDR']; 
     OnlineChecker($Session,$UserName,$Time,$Ip); 
    } 
} 

我希望你能跟着它,但我会尽力解释。它检查sessionId是否在数据库中,如果不是,则将数据库中的会话ID与时间戳,IP和会话用户名一起添加到数据库中,该用户名设置为空白。

否则,我检查我回来,如果它有一个用户名,使用它。如果它是空白的,会话用户名将保持空白,导致它稍后使用该用户名进行检查,然后使用用户名,时间等更新数据库。

+0

我只是在登录脚本中使用该代码。在任何其他网站上,我只是使用print_r,看看它是否有效 – 2014-10-10 10:28:53

+0

你可以发布然后你如何开始每一页?导致你的错误可能在那里。从技术上讲,你现在向我们展示工作代码:) – Dorvalla 2014-10-10 10:30:30

+0

基本上只是session_start();在每一页上。我不保存数据库中相关的任何会话。如果会话过期,用户必须重新登录。 – 2014-10-10 10:59:21