我创建了一个用户可以登录的简单网站。我的问题是当用户输入地址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)
答案 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://..