2012-04-25 43 views
0

我正在使用試圖從我的網站(redmine)上的頁面提取維基文檔。我成功地檢索了重定向到登錄頁面,發送郵件用戶名和密碼字段,但後來到達一個頁面,其中包含redmine的紅寶石重定向,我無法繼續。在管理平臺的文件「response.rb」的Ruby代碼是:PHP-cURL - >按照紅寶石重定向

def redirect(url, status) 
    self.status = status 
    self.location = url.gsub(/[\r\n]/, '') 
    self.body = "<html><body>You are being <a href=\"#{CGI.escapeHTML(url)}\">redirected</a>.</body></html>" 
end 

我不kbow足夠的瞭解紅寶石修改管理平臺的代碼,那麼有沒有辦法在PHP這樣做嗎?

+0

如果您正在重定向,那麼我希望**重定向URL位於標題中。請發佈您的cURL請求中的標題。 – Gazler 2012-04-25 15:44:40

+0

我這麼認爲,但沒有標題,這是最基本的頁面可能沒有任何頭,沒有文檔類型等。 無論如何,我昨天找到解決方案,併發布它,我只是忘記了有驗證碼驗證我的解決方案沒有發佈。 – NaturalBornCamper 2012-04-26 14:56:58

+0

他意味着http標頭,而不是html頁面的頭部。一個http響應應該有標題。 – 2012-04-26 15:01:22

回答

0

找到了替代解決方案!

如果別人與管理平臺或任何其他重定向問題:

  1. 使用cURL登錄第一
  2. 您的會話保存到一個cookie
  3. 使用cURL讓需要你的安全頁面認證。

    <?php 
        $tempFilename = tempnam("/tmp", "COOKIE"); 
    
        // Login 
        $curlHandle = curl_init("http://bob.com/login"); 
    
        curl_setopt($curlHandle, CURLOPT_COOKIEJAR, $tempFilename); 
        curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true); 
    
        $dataArray = array(
         "username" => "bob", 
         "password" => "password" 
        ); 
    
        curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $dataArray); 
    
        $output = curl_exec($curlHandle); 
    
        // Getting the wiki 
        $curlHandle = curl_init("http://bob.com/wiki"); 
    
        curl_setopt($curlHandle, CURLOPT_COOKIEFILE, $tempFilename); 
        curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true); 
    
        $output = curl_exec($curlHandle); 
        echo $output; 
    ?> 
    
0

curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, true);

會告訴捲曲遵循任何正確配置的重定向(任何發送Location:頭信息)。