ajax 不保留 PHP session 变量

标签 php ajax session-variables

我有一个单页网站,它使用 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/

相关文章:

php - 使用我的 PHP 服务将 AngularJS 连接到 mysql?

php - 如何从密码中获取盐并用它来验证用户?

WordPress 的 php 表单处理

jquery/ajax/soap - 访问控制允许来源

PHP 查询更新具有相同 session_id 的表

php - 如何验证 URL,但忽略 http ://or blank?

php - JSP相当于PHP的include()函数?

javascript - 如果在别处处理,则防止调用 .ajaxError

c# - 存储在 Session 中的变量在整个页面生命周期中是否被反序列化一次或多次?

c# - 在 asp.net 中缓存用户数据的最佳做法是什么