我在一个域上有自动登录链接-该域用于授权:
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
}
我的搜索结果是curl,但我不能自己配置请求。
我该怎么做?卷曲还是另一种方式?
您还没有解释什么是"自动登录",或者它是如何工作的。你所有的域都是example.com,所以它们都是同一个域。你肯定不会让人们容易理解你的问题。我会努力说明我是如何理解它的。
你有一个用户登录到一个internet域,并且你想重定向他们到第二个域,在那里他们应该保持登录。
有很多方法可以做到这一点,但它们都取决于特定的条件。
-
如果你使用标准的http登录方法,你可以用重定向到第二个域
https://username:password@example.com
既然你表明你在两个网站上都使用SSL证书,那就相当安全了。即使您不共享数据库,这也会起作用。
-
如果两个域都使用相同的数据库,则可以将加密链接移交给用户的登录会话。这就是我通常的做法。我在数据库中保存会话,每个会话都有一个ID。我加密它,任何好的方法都可以,并将它发送到第二个域,在那里我像这样解密它:
https://example.com?key=DgGyC28Sw3eQFvY9hz2dBkfmCa5zMgV6nN4Jj8VeD76chf7
当然,会话本身应该告诉你用户是否登录。确保你的加密方法是安全的。
在这两种情况下,如果URL落入坏人之手,登录可能会被伪造。这就是为什么SSL的使用很重要,但仍存在一些风险。
虽然你的问题很模糊,但我会给你一些线索。
首先,您必须将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';