2010-09-09 44 views
0

我已經看到了這個要求在幾個方面,但無法找到問題的解答。我怎樣才能登錄使用PHP捲曲遠程站點,然後重定向到該網站

我已經創建了一個登錄到使用PHP /捲曲遠程基於.NET的網站頁面。偉大的作品儘可能去 - 我可以將數據從背面登錄通過curl_exec網頁,做任何與它,但我真的需要做的是將用戶重定向到該頁面。只需重定向,我就可以在遠程站點上註銷一個頁面。我知道答案是獲取cURL登錄時返回的cookie,然後在第二次調用中傳遞它。 。 。不知何故。我肯定有人必須這樣做,並可以提供一個工作的例子。請幫忙 - 這讓我瘋狂!

感謝,

馬克

回答

2

難怪你不能找到問題的解答。
這是不可能的。

+0

是的,你說得對。 – mpemburn 2011-07-20 01:02:06

+0

花了我一小時纔得到同樣的見解。我感覺* curlt *現在... – 2014-10-07 13:52:47

-1

如果你可以用捲曲的網站使用cookies。

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_HEADER, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "User=$user&passwd=$passwd"); 
curl_setopt ($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_NOBODY, TRUE); 

$header = curl_exec($ch); 

if (preg_match("/set-cookie:(.*)\n", $header, $m)) { 
    $cookies = preg_replace('/(expires|path|domain)=[^;]*;?/i', '', $m[1]); 
    header("Cookies: " . $cookies); 
    header("Location: $url"); 
} 

這應該工作,但我不測試它。

+0

那是什麼?好萊塢大片場景? – 2010-09-09 12:59:54

+0

相當滑稽,舊的東西。 – mpemburn 2010-09-09 20:00:07

1

的問題是,登錄會從你的PHP服務器,而不是從最終用戶的IP地址,所以當你把用戶重定向,該網站可能不會看到他們作爲登錄。

你可以設置一些東西,比如將提供給PHP服務器登錄的cookie傳遞給最終用戶,但是如果重定向的網站甚至寫得很好,那麼它就不會出現這種情況。

如果你有這兩個網站的完全控制權,他們可以訪問每個-其他的數據庫,你可以讓PHP服務器告訴.NET網站期待傳入的用戶寫一些後端代碼;這可能會奏效。但是你需要在兩個系統中做一些後端工作。

如果你沒有到.NET網站後端接入,那麼唯一的辦法,我可以看到這樣做是使用PHP的網站作爲淨網站全代理 - 即相當比做重定向,只需通過你的PHP直接顯示.net網站的輸出。儘管如此,這將會產生各種與其相關的其他問題。

+0

如果curl拒絕Cookie,從而強制網站在URL中傳遞會話ID?當然,這裏假定網站不需要啓用cookies,並且它不會檢查改變後的ip是否應該。 – Fanis 2010-09-09 12:52:39

+0

我討厭聽到我想做的事情是不可能的。 CURL將在我的服務器上保存有效的cookie信息 - 它與直接登錄時遠程站點發送的cookie匹配。因此,我無法將其解析爲適當的格式,設置併發送一個標題(「Cookies:」。$ cookies); ??永不說永不。 – mpemburn 2010-09-09 16:16:24

+0

無法在不同域中讀/寫Cookie是抵禦跨站腳本攻擊的根本保護。 – Matthew 2010-09-10 08:01:15