2015-03-02 99 views
1

我想使用curl執行http請求,但無法從服務器獲取有效的響應。使用php curl的HTTP錯誤403

$url變量充滿字符串:"http://www.transfermarkt.de/borussia-dortmund/startseite/verein/16/index.html"

function request($url) { 

    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    $result = curl_exec($ch); 
    $statuscode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    $statustext = curl_getinfo($ch); 
    curl_close($ch); 
    if($statuscode!=200){ 
    echo "HTTP ERROR ".$statuscode."<br>"; 
    echo "<pre>"; 
    echo var_dump($statustext); 
    echo "</pre>"; 
    return "false"; 

    } 
    return $result; 
} 
+0

我分組你給的信息,對問題的頂部,去掉不必要的信息,如「謝謝」。格式化代碼也有助於更快速地理解可能存在的問題。 – 2015-03-06 16:54:21

回答

1

,對於一個有效的User-Agent頭了捲曲PHP客戶端默認情況下不提供(雖然命令行客戶端一樣)網站檢查。爲了克服這一點,你可以添加:

curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: curl/7.39.0'); 

或類似。

編輯:全碼成功地進行了測試:

<?php 

function request($url){ 
     $ch = curl_init($url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_VERBOSE, 1); 

     curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: curl/7.39.0'); 

     $result = curl_exec($ch); 
     $statuscode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
     $statustext = curl_getinfo($ch); 
     curl_close($ch); 
     if($statuscode!=200){ 
     echo "HTTP ERROR ".$statuscode."<br>"; 
     echo "<pre>"; 
     echo var_dump($statustext); 
     echo "</pre>"; 
     return "false"; 

     } 
     return $result; 
    } 

echo request('http://www.transfermarkt.de/borussia-dortmund/startseite/verein/16/index.html'); 

?> 
+1

與一個有效的用戶代理我仍然得到相同的錯誤 – juergenBVB 2015-03-02 21:34:17

+0

仔細檢查您的代碼,我已經粘貼了完整的代碼作品 – 2015-03-02 21:36:54

+0

非常感謝你,編輯錯誤的行。 – juergenBVB 2015-03-02 21:38:26