加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP不会在某些用户的会话中存储数据

发布时间:2020-05-25 03:46:45 所属栏目:PHP 来源:互联网
导读:内部服务器为LAN上的用户提供两种不同的应用程序:https://10.0.0.100/app1/ https://10.0.0.100/app2/ 这两个应用程序都由相同的Apache配置文件提供服务,它们只位于public_html下的单独目录中.两个应用程序都使用PHP会话,但它们都在$_SESSION变量前面加上其

内部服务器为LAN上的用户提供两种不同的应用程序:

https://10.0.0.100/app1/
https://10.0.0.100/app2/

这两个应用程序都由相同的Apache配置文件提供服务,它们只位于public_html下的单独目录中.两个应用程序都使用PHP会话,但它们都在$_SESSION变量前面加上其命名空间:

$_SESSION['app1_favorite_colour'] = 'Yellow';
$_SESSION['app2_quest'] = 'Agghhh!';

尽管如此,登录到app1的用户没有将他们的app2_会话数据写入磁盘上的会话文件.考虑page1.php:


然后,在page2.php上:

如果用户也登录到app1,则不会向用户显示“是”!但是,不使用app1的用户确实在page2.php上看到“是”.调查一下,我在/ var / lib / php / session /中打开了会话文件.我只看到该文件中的变量以前缀app1_开头,而没有以app2_开头的变量用于登录app1的用户.未登录到app1的其他用户确实拥有在会话文件中以app2_开头的变量!

我已经检查过lsof文件没有被锁定,我已经确认浏览器中没有打开浏览器窗口的app1页面.为什么App2会话变量不能存储到会话文件中?有足够的可用内存和硬盘空间,CPU负载低于0.1(按正常运行时间衡量).多个浏览器(Firefox,Chrome)中的多个用户都会遇到这个问题.清除浏览器cookie和缓存没有帮助.

最佳答案 我相信你所做的事情应该有效,但有一种更好的方法可以解决你的问题.
而不是使用’app1’或’app2’为会话密钥添加前缀,只需在session_start()之前使用session_name()函数,如:

session_name('app1');
session_start();
$_SESSION['been_here'] = 'Yes!';
...

您还可以使用session_set_cookie_params()调整会话cookie路径,以便两个应用程序彼此完全不可见,如:
session_set_cookie_params(60 * 60 * 24 * 30,’/ app1 /’);

为了进一步排除故障,您应该检查使用session_ *函数的所有位置,并查看php.ini中的session.*配置选项.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读