移动到一个页面到另一个页面时,php会话值丢失

时间:2012-12-22 06:01:25

标签: php session

我创建了一个用户可以登录的简单网站。我的问题是当用户输入地址http://www.mysite.com/signin.php并且在成功登录后他手动输入地址http://mysite.com但是从那里页面会话变量没有得到。如何对www.mysite.com,mysite.com进行相同的会话php ini文件中是否有任何设置或如何设置为两个地址进行相同的会话?

if(verify($password,$pw['password']))
{   

    $uid=$pw['user_id'];
    $_SESSION['login_status']=true;
    $_SESSION['user']=$uid;

} 我有一个页面checksession.php

<?php 
session_start();
var_dump($_SESSION);
?>

当我从http://www.mysite.com/signin.php登录并检查http://www.mysite.com/checksession.php其显示的会话值但来自http://mysite.com/checksession.php它没有显示任何内容。(差异在地址1中有www,另一个没有www)

4 个答案:

答案 0 :(得分:2)

我通常强迫www。或者没有www。在我的.htaccess文件中使用重定向。

你的问题可能是你的PHP_SESS_ID cookie域不是以“。”开头的。

session_set_cookie_params ( 3600 , '/', '.example.com');

应该设定它。

答案 1 :(得分:1)

session_start();

之前添加此行
ini_set('session.cookie_domain', '.mysite.com' );

这应该告诉PHP在同一个会话中包含mysite.com的所有子域名,包括“www”。请注意域名之前的时间段。

答案 2 :(得分:0)

另一种方法是使用session_start();在config.php文件中,并将该文件包含在需要会话的每个页面的代码顶部,否则U将无法获取SESSION变量的值。!!

答案 3 :(得分:-1)

在页面地址调用前使用https://..