SESSION在服务器上工作正常,但没有全面维护

时间:2011-12-16 06:42:26

标签: php session session-variables

我正在使用PHP为3种用户创建一个网站,如Head,Main,Normal。 因此,我创建了一个用于记录的页面,该页面将检查凭据并将会话移动到相应的文件夹。我有像

这样的结构
main //folder
head //folder
normal //folder
index.php

此index.php将检查用户类型并导航到相应文件夹的索引页。

它在localhost上工作正常。但是在服务器上,它正确地重定向到文件夹,但是会话是空的,因此会出现空白页。

我做了

DEFINE('COOKIE_BASE_DOMAIN_NAME', '.domain.com');
ini_set('session.cookie_domain', COOKIE_BASE_DOMAIN_NAME);
session_start();

在每个页面上但问题仍然相同。我检查了会话路径,所以我打印了phpinfo,我得到了

session
Session Support     enabled
Registered save handlers    files user sqlite
Registered serializer handlers  php php_binary wddx

Directive   Local Value Master Value
session.auto_start  Off Off
session.bug_compat_42   Off Off
session.bug_compat_warn On  On
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  100 100
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 4   4
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /var/php_sessions   /var/php_sessions
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    Off Off
session.use_trans_sid   1   1

知道我错过了什么或应该怎么做?会话正在创建,因为它导航到其他页面,并且存在一个条件,即在会话创建后它应该仅导航。但在第二页会话数组为null。想法将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

您可以检查目录/ var / php_sessions ...如果权限正常并且在那里创建了文件。

除此之外,如果不存在,只需开始一个新的会话&禁用cookie超时(直到浏览器断开连接):

if(!$_SESSION){
   session_set_cookie_params(0);
   session_start();
}

DEBUG:

出于调试目的,将路径更改为可访问的内容很有帮助,例如:

ini_set('session.save_path','/home/someuser/public_html/sessions/');

在生产环境中,在每种情况下都必须在web-root之外,只需看下面的评论。

如果一切都没有帮助,请在后续页面上尝试这样的事情(你的phpinfo缺少相关信息,所以这只是猜测):

$_SESSION[SID]['page']

提示:

当您更改内容时,请调用session_destroy()或删除浏览器中的PHPSESSID Cookie。

答案 1 :(得分:-1)

看起来cookie无法正常工作(或阻止或其他)。如果cookie不起作用,PHP会将会话ID添加到查询字符串中URL的末尾(作为PHPSESSID)。

如果使用header()重定向,则不会自动附加会话ID,会话ID也会丢失。

你可以试试这个:

header("Location: folder/index.php?" . SID);
exit();