【问题标题】:PHPSESSID inconsistent via JQuery AJAX Post requests通过 JQuery AJAX Post 请求的 PHPSESSID 不一致
【发布时间】:2020-06-15 00:15:52
【问题描述】:

我有 ReactJS 应用程序,我正在尝试发送 AJAX 请求以获取当前会话信息。

前端代码:

  $.post('http://localhost/php/user/getSession.php',null,function(data){
       console.log(data);
    })

getSession.php 代码:

<?php
  session_start();
  echo $_SESSION['Username'];
  if(!isset($_SESSION['Username'])){
    echo "Not set yet";
  }
  $_SESSION['Username']="ASDASD";
?>

所以在第一个请求中我的输出应该是“Not set yet”,第二个应该是“ASDASD”。

当我尝试直接从 google chrome 访问我的 .php 文件时,它可以完美运行,并且在每次重新加载页面时都保持我的 PHPSESSID 相同。 (http://localhost/php/user/getSession.php) https://prnt.sc/szjies

当我尝试通过 AJAX 访问它时,问题就开始了。它总是返回:“尚未设置”,并在重定向时创建新的 PHPSESSID(删除之前保存的任何值)。 我的 ReactJS 应用程序和 php 后端位于两个不同的文件夹中,因为我将 XAMPP 用于 Apache 和 Mysql(不知道这是否是问题所在)。 https://prnt.sc/szjiwz , https://prnt.sc/szjj52

如何确保创建 ReactJS 应用后,我的 PHPSESSID 保持不变(保留我分配给 $_SESSION 的所有值)?

【问题讨论】:

    标签: javascript php reactjs ajax session


    【解决方案1】:

    据我所知,每次刷新或关闭页面时,服务器端的会话都会有所不同(这意味着每次访问页面,每次都会创建新会话),我认为不可能保留通过 ajax 调用进行会话。

    • 所以我认为解决方案是您应该将其作为 cookie/session 存储在客户端而不是存储在服务器端,并且您可以将 seesion id 存储在客户端并在每次请求远程服务器时将 id 发送到远程服务器用那个处理一些东西

    【讨论】:

    • 通过 URL 直接访问时,刷新页面保持相同的 PHPSESSID。问题是我的 AJAX 会自动发送 set-cookie 属性,我不知道如何让它不这样做。
    • 您是否在不同的 url 发送请求?例如:www.localhost/abc.php、www.localhost/qwe.php
    • 同一个文件,同一个位置,同一个 apache。
    • 抱歉,您尝试过使用setcookie(session_name(),session_id(),time()+$lifetime); 吗?
    • 我有,我相信我发现了我的问题所在。我的主要文件是 index.html。即使我在 .php 文件中执行 ping 操作,我相信我需要将我的应用程序重新创建为 index.php 以便它可以处理会话内容。将不得不弄清楚这一点。感谢您的帮助:)
    猜你喜欢
    • 2014-01-30
    • 2017-02-18
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多