小编典典

PHP会话变量未使用Ajax保留

ajax

我有一个使用AJAX加载新php文件并更新显示的单页网站。

我从主页开始php会话,但是当我使用ajax更新内部html时,我需要这些会话变量来加载新的php文件。

这篇文章与此类似:PHP会话变量未保留。但是我检查了一下,我的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路径。对于大多数付费的Web托管服务,它们仅具有用于会话的默认容器,但受负载平衡的影响。真好


阅读 252

收藏
2020-07-26

共1个答案

小编典典

我认为您在session_start()Ajax调用的页面上不见了。

你需要:

<?php
session_start();
if(isset($_SESSION['views']))
    { echo "Views: " . $_SESSION['views'];} 
    else 
    { echo "Views: NOT SET";}
?>
2020-07-26