我有一个使用 AJAX 加载新 php 文件并更新显示的单页网站。
我在主页上启动我的 php 会话,但是当我使用 ajax 更新内部 html 时,我需要这些会话变量来加载新的 php 文件。
这篇文章与这篇文章类似:PHP Session Variables Not Preserved。但我检查了一下,我的 php.ini 有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 路径。对于大多数付费虚拟主机服务,它们只有一个默认的会话容器,但它会受到负载平衡的影响。多么放松。