我正在使用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。想法将受到高度赞赏。
答案 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();