2016-09-24 161 views
0

我正在嘗試在我的php Web應用程序上使用按鈕在另一個網站上啓動登錄的會話。換句話說,我希望我的應用程序:無頭登錄:使用cURL登錄並打開遠程會話

  1. 打開一個新標籤/窗口(實現)
  2. 轉到另一個網站+登錄或
  3. (或者)收集所需的目標站點的會話數據考慮當前的瀏覽器登錄

這得以實現(在不完全的方式用下面的代碼:

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$postdata); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); 
    curl_setopt($ch, CURLOPT_REFERER, $url); 

    $result = curl_exec ($ch); 
    curl_close ($ch); 

    print $result; 

這成功地將遠程站點的「登錄」頁面可視化,但是每當我點擊此類遠程站點的任何功能時,我都會看到並顯而易見404。這是因爲我只是通過cURL打印成功登錄的輸出而我的瀏覽器不處理目標網站上的遠程應用程序。例如。我的地址欄說我在local.dev/loggedin.php中,而不是在secure.targetsite.com/loggein.php。

這可能有幫助:一旦通過瀏覽器登錄後,目標網站會設置一個會話cookie,允許會話在一段時間內存活,這樣也可能有用。我的web應用程序是否可以從curl執行的auth過程中獲取並存儲會話數據並使用它登錄?

這也許是不可能被通過捲曲做..

我想的只是解析響應報頭的cookie和使用PHP的setcookie(),但它不工作:我得到遠程反彈應用程序,如果我從未登錄過。

請耐心等待,我不是使用捲曲的專家。

+0

你是對的,這不可能通過cURL。而且你也不能爲其他域設置Cookie。 – CBroe

+0

如果你想創建一個無頭的登錄到另一個網站,你會以哪種方式解決這個問題? – artoo

回答

0

我已經爲我自己的一些應用程序完成了這項工作,但它幾乎適用於任何可以通過html表單提交登錄的東西。您無法使用curl,因爲它在您的Web服務器上運行(無論是在本地計算機上還是在雲中某處無關緊要),而不是實際上由您的瀏覽器運行。您的PHP應用程序需要打開一個新的選項卡/窗口,其頁面包含一個HTML,其中包含所有必要的字段,方法=「get」或「post」,以及action =「目標登錄URL」。然後只需添加一個自動錶單提交 - 例如,在頁面加載時使用jQuery $('#form_id').submit()