SESSION创建,但是在$中没有PHPSESSID

我在PHP / Ajax在线购物车上遇到了SESSION变量的一些奇怪问题。

当我第一次查看该页面时,SESSION被创建并在页面内工作。 然后,当我导航到同一目录中的另一个PHP页面时,SESSION完全丢失。 奇怪的是, 这只发生一次 。 一旦用户在更换页面时经历完全失去SESSION的过程,SESSION将在整个购物车中全面运行。

我开始在每个页面视图中自我发送var _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ $ var _ 看起来,当第一次查看页面时,SESSION存在并包含数据。 但是,$ _SERVER ['HTTP_COOKIE']变量中没有生成PHPSESSID。 在导航到另一个页面时,PHPSESSID被创建并且SESSION将开始工作,但第一个页面视图的初始SESSION数据丢失。

如果还没有为SESSION生成PHPSESSID,是否有办法生成PHPSESSID? 或者这是典型的行为,与我的随机SESSION丢失问题无关? 我使用PHP 5.2。

购物车中的每一页都以完全相同的方式开始:

$title="Title";
$keywords="keywords";
$description="description";
@include('../header_cart.php');

然后在header_cart.php的顶部有:

session_start();
if(!isset($_SESSION['active'])){
    $_SESSION['active']=$_SERVER['REMOTE_ADDR'];
}

你在调用session_start()之前是否检查过没有输出? (甚至没有空白字符!)。

在刷新任何输出后,不能发送HTTP标头,这可能导致尝试告诉客户端初始会话cookie失败。


你是否在http:和https:之间切换? 它们有时被视为两个单独的域,并且它们之间可能不共享密钥。


事实证明,它将mydomain.com和www.mydomain.com识别为单独的会话,并将2个不同的PHPSESSID存储在2个cookie中。

我将它添加到我的.htaccess文件中,以便始终将mydomain.com/shop重定向到www.mydomain.com/shop,以获取http和https。

RewriteEngine On

#force http://www. to make sure SESSION data is always the same
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www.
RewriteCond %{REQUEST_URI} shop
RewriteRule ^(.*)$ http://www.mydomain.com/shop/$1 [R,L]

#force https://www. to make sure SESSION data is always the same
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www.
RewriteCond %{REQUEST_URI} shop
RewriteRule ^(.*)$ https://www.mydomain.com/shop/$1 [R,L]
链接地址: http://www.djcxy.com/p/10335.html

上一篇: SESSION created but theres no PHPSESSID in $

下一篇: How to properly label branches of a tree in a depth first search