使用php重定向到另一个域的https请求



我在一个域上有自动登录链接-该域用于授权:

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.comexample.com进行检查:

$url = https://example.com/api/login/{key}/{username};
if function-to-check-autologin($url) == "true" {
  //do something
}

我的搜索结果是curl,但我不能自己配置请求。

我该怎么做?卷曲还是另一种方式?

您还没有解释什么是"自动登录",或者它是如何工作的。你所有的域都是example.com,所以它们都是同一个域。你肯定不会让人们容易理解你的问题。我会努力说明我是如何理解它的。

你有一个用户登录到一个internet域,并且你想重定向他们到第二个域,在那里他们应该保持登录。

有很多方法可以做到这一点,但它们都取决于特定的条件。

  1. 如果你使用标准的http登录方法,你可以用重定向到第二个域

    https://username:password@example.com

既然你表明你在两个网站上都使用SSL证书,那就相当安全了。即使您不共享数据库,这也会起作用。

  1. 如果两个域都使用相同的数据库,则可以将加密链接移交给用户的登录会话。这就是我通常的做法。我在数据库中保存会话,每个会话都有一个ID。我加密它,任何好的方法都可以,并将它发送到第二个域,在那里我像这样解密它:

    https://example.com?key=DgGyC28Sw3eQFvY9hz2dBkfmCa5zMgV6nN4Jj8VeD76chf7

当然,会话本身应该告诉你用户是否登录。确保你的加密方法是安全的。

在这两种情况下,如果URL落入坏人之手,登录可能会被伪造。这就是为什么SSL的使用很重要,但仍存在一些风险。

虽然你的问题很模糊,但我会给你一些线索。

首先,您必须将CURLOPT_SSL_VERIFYPEER选项设置为false,除非您要处理对等方的证书。

你还必须告诉CURL处理重定向。这假设您设置了CURLOPT_FOLLOWLOCATION选项以及CURLOPT_MAXREDIRSCURLOPT_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';

相关内容

  • 没有找到相关文章

最新更新