是否可以通过cURL跨域发送PHP会话变量?

时间:2015-10-01 15:57:15

标签: php session curl cross-domain

如果某人登录网站(网站A )且该网站创建了会话变量,则其他网站(网站B )是否可以对PHP例程进行cURL调用在网站A 上,网站B 使用网站A 的会话变量发回json变量?

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

这是我想到的情景:

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

    感谢。

2 个答案:

答案 0 :(得分:2)

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

假设两个网站都在同一台服务器上,您可以手动设置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。

答案 1 :(得分:1)

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

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

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