-1

我制作了一个简单的网站,用户可以在其中登录。我的问题是当用户输入地址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它什么都不显示。(不同之处在于地址一个带www,另一个不带www)

4

4 回答 4

2

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

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

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

那应该设置它。

于 2012-12-22T06:09:36.013 回答
1

在你的之前添加这一行session_start();

ini_set('session.cookie_domain', '.mysite.com' );

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

于 2012-12-22T06:17:03.690 回答
0

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

于 2013-11-28T10:49:03.987 回答
-1

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

于 2021-02-16T05:12:01.603 回答