【问题标题】:How can React read a session SET in PHPReact 如何在 PHP 中读取会话 SET
【发布时间】:2021-12-23 00:50:36
【问题描述】:

表单被传递给同一域上的 php 脚本,php 创建一个会话并声明会话值。

我想响应读取 PHP 脚本创建的会话数据

【问题讨论】:

  • React 无法自行直接读取 PHP 会话。您需要向 PHP 脚本发出 HTTP 请求,该脚本会返回您感兴趣的数据。
  • 我该怎么做

标签: php reactjs session


【解决方案1】:

如果安全不是问题,我建议使用 cookie,或者尝试以下方法:

session.php

<?php session_start(); echo json_encode($_SESSION); ?>

code.js

fetch('session.php', {credentials: "same-origin"})
  .then(response => response.json())
  .then(data => console.log(data));

【讨论】:

  • 您需要传递正确的会话 cookie 才能恢复会话
  • 我的错……我通常在配置中隐藏 session_start()
  • 不过,不发送 cookie 会导致会话为空
  • 您不能或不应该使用 react 访问 PHP 会话后端。
  • @DanielW。有什么理由不这样做?
【解决方案2】:

只需将 PHP 所需的信息嵌入 HTML 中即可。

<script>
const sessionData = {
    "country": <?= json_encode($intlContext->getCountryCode()); ?>,
    "someSessionValue": <?= json_encode($_SESSION['someValue']); ?>
};
<script>

如果您无法在 react 中立即从脚本中读取数据,您可以从元字段中选择它们:

<meta name="country" content="<?= htmlentities($intlContext->getCountryCode()); ?>">
<meta name="someSessionValue" content="<?= htmlentities($_SESSION['someValue']); ?>">

无需传递 PHP 会话 ID 即可做出反应。您无法在 react 中验证也无法从 PHP 访问会话后端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-26
    • 2015-12-18
    • 2020-08-14
    • 2014-05-20
    • 1970-01-01
    • 2015-04-28
    • 2011-03-20
    • 1970-01-01
    相关资源
    最近更新 更多