PHP会话ID随每个请求而变化

alt*_*eg0 8 php session

我刚刚将我的应用程序从本地WAMP迁移到实际的在线服务器.这导致会话ID未显示时出现问题.

  • 我检查了session_start之前输出的不需要的字符
  • 我似乎无法找到任何会话文件保存在我的/ tmp中

这些是我的会话设置:

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  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 5   5
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /tmp    /tmp
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_trans_sid   0   0
Run Code Online (Sandbox Code Playgroud)
  • 在线服务器正在运行:PHP版本5.3.9,而WAMP是:PHP版本5.3.5.
  • 通过查看发送的标头和每个页面加载中的响应,我得到以下内容,set-cookie发送相应的会话ID,收到的响应发送一个新的响应,就像没有请求任何内容一样.
  • 我在预览URL(SSL on)上运行该站点.我不知道这是否有任何关系,我的域名尚未注册.
  • 错误代码非常简单:

    $sId = session_id();

    if ($sId == '') { session_start(); }

Dav*_*eto 12

我刚刚解决了同样的问题.

事实证明,cookie PHPSESSID(保留会话记录)已被发送,但服务器忽略了它,因此会话未得到维护,并且每次页面重新加载或更改时服务器都会重新启动会话.

问题是我在我的wp-config.php这行:

@ini_set('session.cookie_secure','On');
Run Code Online (Sandbox Code Playgroud)

这意味着如果连接不安全,则会忽略每个cookie,因此服务器会重新启动PHPSESSID cookie和会话.

检查你的wp-config.php或你的init.php.是cookie的问题.


str*_*stn 2

session_start应该是文件中的第一件事,之后您可以获取会话 ID:

session_start();
$sId = session_id();
Run Code Online (Sandbox Code Playgroud)