如果一个人登录到一个网站(网站a ),这个网站创建会话变量,另一个网站(网站B)是否可以对网站a 上的PHP例程进行cURL调用,该例程将返回给网站B一个json变量与网站a 的会话变量?
如果是,我该如何做到这一点?
这是我心目中的场景:
- 用户访问 A网站并登录。这将在网站B 中创建会话变量
- 在同一浏览器会话中,用户访问 B网站。
- 网站B中的主页对网站a 中的特定例程进行cURL调用,该例程验证会话变量是否存在,如果存在,则将其信息以JSon形式发送回。
- 根据JSon变量内容(如果存在),网站B向用户显示不同的内容。
可以通过cURL实现吗?
谢谢。
还没有尝试过,所以我不知道它是否会起作用,但是我最好的猜测是得到类似于你想要的东西如下。
假设两个网站都在同一台服务器上,你可以手动设置session_id(),然后跟踪这个值。然后将此ID字符串发送到网站B,并在那里也使用相同的ID调用session_id()。
http://php.net/manual/en/function.session-id.php如果你的网站不在同一台服务器上,那么你需要编辑你的php.ini并将你的会话存储连接到memcache等服务。
例如。
网站:
session_id('test');
$_SESSION['hello'] = "hello worldn";
网站B:
session_id('test');
echo $_SESSION['hello'];
显然你需要做比上面更多的工作,因为你需要为每个用户/请求生成唯一的id
由于我的网站不是在同一服务器上,这是我必须做的,使其工作(没有memcache)。这不是最优雅的解决方案,但这就是我如何使它工作,即如何发送到网站A网站B的会话变量的内容:
-
网站A中的php例程使用
header()
重定向到网站B。在中请求php的网站A将其URL作为查询字符串的一部分发送,因此网站B知道将其答案发送到哪里。站点B中的接收页面使用session_id()
抓取会话ID,并通过自动提交post表单将其发送回站点A。现在使用会话ID来自网站B, 网站A对网站B进行cURL调用,返回网站B会话变量的内容。注释:没有会话ID, 网站B发送一个空会话变量给网站A。