我有一个单页网站,它使用 AJAX 加载新的 php 文件并更新显示。
我在主页上开始我的 php session ,但是当我使用 ajax 更新内部 html 时,我需要这些 session 变量来加载新的 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。但是它仍然无法拉取 session 变量,如果我确实给它赋值,那么两个同名 session 变量将保持相互独立。
回答这个问题产生的问题:我发现我必须在我的 php.ini 文件中设置静态 session_save 路径。对于大多数付费虚拟主机服务,它们只有一个默认的 session 容器,但它会受到负载平衡的影响。多么令人欣慰。
最佳答案
我认为您在 Ajax 调用的页面上缺少 session_start()
。
你需要:
<?php
session_start();
if(isset($_SESSION['views']))
{ echo "Views: " . $_SESSION['views'];}
else
{ echo "Views: NOT SET";}
?>
关于ajax 不保留 PHP session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11768816/