簡體   English   中英

https使用php重定向到另一個域的請求

[英]https request to another domain with redirect using php

我在一個域上有自動登錄鏈接 - 該域名用於授權:

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”,因此它們都是相同的域名。 當然,你不容易讓人們理解你的問題。 我會試着說出我對它的理解。

您已經有一個用戶登錄到一個互聯網域,並且您想將它們重定向到第二個域,他們應該保持登錄狀態。

有很多方法可以做到這一點,但它們都取決於某些條件。

  1. 如果您使用標准的http登錄方法,則可以使用以下方法重定向到第二個域:

    https://開頭的用戶名: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';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM