我在一个域上有自动登录链接 - 此域名用于授权:
https://example.com/api/login/{key}/{username}
关注此链接后,用户将被重定向到控制面板:
https://example.com
如果出现问题 - 用户重定向到
https://example.com/login page.
在另一个域example2.com
中,用户拥有结算面板,并在其中放置了https://example.com/api/login/{key}/{username}
链接。
所以我需要从example2.com
到example.com
进行检查:
$url = https://example.com/api/login/{key}/{username};
if function-to-check-autologin($url) == "true" {
//do something
}
我的搜索结果是卷曲,但我不能自己配置请求。
我怎么能这样做?卷曲或其他方式?
答案 0 :(得分:0)
您还没有解释'自动登录'是什么,或者它是如何工作的。您的所有域名都是“example.com”,因此它们都是相同的域名。当然,你不容易让人们理解你的问题。我会试着说出我对它的理解。
您已经有一个用户登录了一个互联网域,并且您想要重定向 他们到第二个域,他们应该保持登录状态。
有很多方法可以做到这一点,但它们都取决于某些条件。
如果您使用标准的http登录方法,则可以使用以下方法重定向到第二个域:
由于您表明您在两个网站上使用的SSL证书都是合理安全的。即使您不共享数据库,这也会有效。
如果两个域都使用相同的数据库,则可以将加密链接切换到用户的登录会话。这就是我正常做的方式。我在我的数据库中保存会话,每个会话都有一个ID。我加密,任何好的方法都会这样做,然后将它发送到我解密它的第二个域:
https://example.com?key=DgGyC28Sw3eQFvY9hz2dBkfmCa5zMgV6nN4Jj8VeD76chf7
当然,会话本身应该告诉您用户是否已登录。确保您的加密方法是安全的。
在这两种情况下,如果URL落入坏人之手,登录可能会被伪造。这就是使用SSL很重要的原因,但仍存在一些风险。
答案 1 :(得分:0)
虽然你的问题很模糊,但我会给你一些线索。
首先,您必须将CURLOPT_SSL_VERIFYPEER
选项设置为false
,除非您要处理同行的证书。
此外,您必须告诉CURL处理重定向。这假设您设置CURLOPT_FOLLOWLOCATION
选项以及CURLOPT_MAXREDIRS
和CURLOPT_AUTOREFERER
。
为了发送带有请求的POST数据,您必须将CURLOPT_POST
选项设置为true
,将CURLOPT_POSTFIELDS
设置为POST数据或url编码字符串数组。
完成CURL请求后,您可以通过curl_getinfo
函数了解有关它的所有信息。使用CURLINFO_REDIRECT_COUNT
作为第二个参数调用它将提供重定向的数量,并CURLINFO_EFFECTIVE_URL
- 最后一个有效的URL。
所以代码可能如下所示:
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_NOBODY => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 1,
CURLOPT_AUTOREFERER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data_array,
));
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_REDIRECT_COUNT) == 1 && curl_getinfo($ch, CURLINFO_EFFECTIVE_URL) == $sample_redirect_url)
echo 'OK';