PHP会话变量未使用ajax保留

Qui*_*nma 14 php ajax session-variables

我有一个单页网站,使用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;}
?>
Run Code Online (Sandbox Code Playgroud)

用户输入之后我使用ajax来调用php文件并加载页面的子部分:

<?php    
if(isset($_SESSION['views']))
    { echo "Views: " . $_SESSION['views'];} 
    else 
    { echo "Views: NOT SET";}
?>
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我,我错过了哪一个重要的步骤?谢谢.

更新:在对主页和子页面添加session_id()调用后,我看到两个页面都具有相同的Session_ID.但是它仍然无法拉取会话变量,如果我确实为它赋值,则两个相同名称的会话变量保持彼此独立.

回答这个问题创建的问题: 我发现我必须在php.ini文件中设置静态session_save路径.对于大多数付费虚拟主机服务,他们只有一个会话的默认容器,但它受负载平衡的影响.真是个好主意.

dre*_*010 26

我认为你在session_start()Ajax调用的页面上遗漏了.

你需要:

<?php
session_start();
if(isset($_SESSION['views']))
    { echo "Views: " . $_SESSION['views'];} 
    else 
    { echo "Views: NOT SET";}
?>
Run Code Online (Sandbox Code Playgroud)

  • 对于这个问题,你是第一个正确回答的问题,添加session_start()可以正常解决问题,但在我的情况下,其他一些奇怪的事情正在发生,我会继续努力解决它.谢谢你的有用建议.只有一个cookie和Web标题是相同的但由于某种原因php不会获得会话变量,并且我的日志中没有错误.我将尝试使用本地LAMP服务器. (2认同)

Kal*_*esh 6

您还需要session_start()在另一个PHP文件中启动会话,即通过AJAX调用的文件.