我有一个使用AJAX加载新php文件并更新显示的单页网站。
我从主页开始php会话,但是当我使用ajax更新内部html时,我需要这些会话变量来加载新的php文件。
这篇文章与此类似:PHP会话变量未保留。但是我检查了一下,我的php.ini有session.use_cookies = 1
session.use_cookies = 1
主页PHP:
<?php session_start(); if(isset($_SESSION['views'])) {$_SESSION['views']=$_SESSION['views']+1;} else {$_SESSION['views']=1;} ?>
在用户输入之后,我使用ajax调用php文件并加载页面的一个小节:
<?php if(isset($_SESSION['views'])) { echo "Views: " . $_SESSION['views'];} else { echo "Views: NOT SET";} ?>
有人可以告诉我我缺少哪些重要步骤吗?谢谢。
更新: 在主页和子页面上都添加了session_id()调用后,我看到两个页面具有相同的Session_ID。但是,它仍然不能拉出会话变量,如果我确实给它分配了一个值,则两个相同名称的会话变量将保持彼此独立。
回答此问题所产生的问题: 我发现必须在php.ini文件中设置一个静态session_save路径。对于大多数付费的Web托管服务,它们仅具有用于会话的默认容器,但受负载平衡的影响。真好
我认为您在session_start()Ajax调用的页面上不见了。
session_start()
你需要:
<?php session_start(); if(isset($_SESSION['views'])) { echo "Views: " . $_SESSION['views'];} else { echo "Views: NOT SET";} ?>