【问题标题】:Is it possible to send PHP session variables across domains through cURL?是否可以通过 cURL 跨域发送 PHP 会话变量?
【发布时间】:2015-12-29 18:20:41
【问题描述】:

如果一个人登录到一个网站(网站 A)并且该网站创建了会话变量,那么另一个网站(网站 B)是否可以对 PHP 例程进行 cURL 调用在 网站 A 上,将向 网站 B 发送回具有 网站 A 的会话变量的 json 变量?

如果是这样,我该如何做到这一点?

这是我想到的场景:

  1. 用户访问网站A并登录。这会在网站B中创建会话变量
  2. 在同一浏览器会话中,用户访问网站 B
  3. 网站 B 中的主页对 网站 A 中的特定例程进行 cURL 调用,以验证会话变量是否存在,如果存在,则将其信息作为 JSon 发送回.
  4. 根据 JSON 变量内容(如果存在),网站 B 向用户显示不同的内容。

可以通过 cURL 实现吗?

谢谢。

【问题讨论】:

  • 是的,这是可能的。你试过了吗?有什么问题?
  • 我遇到的问题是会话变量返回空。通过重定向使用相同的解决方案,即标头(位置:...),工作。换句话说,在同一个浏览器会话中,cURL 给了我空的会话变量,但是双重重定向(来回)给了我存在的会话变量。

标签: php session curl cross-domain


【解决方案1】:

没有尝试过,所以我不知道它是否会起作用,但是我最好的猜测是得到类似于你想要的东西。

假设两个网站都在同一台服务器上,您可以手动设置 session_id(),然后跟踪该值。然后,您将这个 ID 字符串发送到网站 B,并在那里使用相同的 ID 调用 session_id()。

http://php.net/manual/en/function.session-id.php

如果您的网站不在同一台服务器上,那么您需要编辑 php.ini 并将会话存储连接到 memcache 之类的服务。

例如。

网站 A:

session_id('test');
$_SESSION['hello'] = "hello world\n";

网站 B:

session_id('test');
echo $_SESSION['hello'];

显然,您需要做比上述更多的工作,因为您需要为每个用户/请求生成唯一的 ID。

【讨论】:

    【解决方案2】:

    由于我的网站不在在同一台服务器中,因此我必须这样做才能使其正常工作(没有 memcache)。这不是最优雅的解决方案,但这就是我使它工作的方式,即如何将 Website B 的会话变量的内容发送到 Website A:: p>

    1. 网站 A 中的 php 例程使用 header() 重定向到 网站 B网站 A 中的请求 php 将其 URL 作为 查询字符串 的一部分发送,以便 网站 B 知道将其答案发送到哪里。
    2. 网站 B 中的接收页面使用 session_id() 获取 会话 ID 并将其发送回 网站 A 通过自动提交的帖子表单。
    3. 现在使用来自网站 B会话 ID网站 A网站 B 进行 cURL 调用,它返回 网站 B 的会话变量的内容。

    注意:如果没有会话 ID网站 B 会向 网站发送一个空的会话变量一个

    【讨论】:

      猜你喜欢
      • 2011-10-13
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 2017-10-22
      • 2018-10-30
      • 1970-01-01
      • 2010-11-23
      相关资源
      最近更新 更多