【发布时间】:2014-08-26 12:25:56
【问题描述】:
我有 domain1.com、domain2.com、domain3.com 和 centraldomain.com。
我希望跨域 1、域 2 和域 3 连接登录/注册,因此我将设置他们所有的登录表单以提交到 centraldomain.com/login.php。然后我可以在该站点上创建一个会话,并在用户访问其他 3 个域中的任何一个时发送 curl 请求以检查该会话。我认为这会起作用(如果我错了,请纠正我)。
但我想更进一步 - 我希望 centraldomain.com/login.php 创建一个 cookie,当用户访问任何其他站点时,他们可以向 centraldomain.com 发送请求以检查是否有一个 cookie 处于活动状态。
总之,我希望 domain1 能够询问 centraldomain 是否有当前访问者的 cookie 并获取一些 cookie 数据作为响应。
这是我用来(尝试)设置 cookie 的 cURL 代码。但是,它不起作用:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.centraldomain.com/fantasy/login.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
http_build_query(array('par1' => $par1, 'par2' => $par2)));
// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
这是 centraldomain.com 上的 login.php:
$par1=$_POST['par1'];
$par2=$_POST['par2'];
$cookievalue=$email."_____".$cryptedpass;
$date_of_expiry=time()+60*60;
setcookie("fantasylogin", $cookievalue, $date_of_expiry, "/" );var_dump($_COOKIE);
当我直接在 centraldomain.com 上打开此页面时,它会设置一个 cookie。但是 curl 请求什么也不做。所以很自然地,我需要在我什至请求返回 cookie 内容之前解决这个问题。说到这一点,有人告诉我可以做到,但对我来说没有意义。 cookie 连接到用户代理。因此,如果您发送 curl 请求(而不是在浏览器中打开页面),目标脚本如何知道访问者正在使用什么用户代理?它如何识别该访问者的 cookie?是否有必要随请求一起发送用户代理标识?
如果 curl 不起作用,您能提出不同的解决方案吗?我一直在想一些不可见的表单和 iframe 可以解决问题,但如果没有必要,我宁愿不处理。
让我们暂时不考虑安全问题(关于 cookie 内容和一般 cookie 相关问题)。基本版本正常运行后,我将添加适当的安全机制。
【问题讨论】: