2017-05-24 138 views
0

我在這裏的代碼應該返回給我的網頁的源代碼。簡單的捲曲不工作

<?php 
function curlGet($url){ 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_URL, $url); 

    $results = curl_exec($ch); 

    curl_close($ch); 

} 

$packtPage = curlGet('https://www.google.com'); 

print_r($packtPage); 

據我瞭解,這段代碼應該返回並回顯出該網頁的源代碼。但是,運行此代碼時,我得到一個空白頁面。

到處尋找原因如預期,這是不工作的瞭解後,我troubleshooted,發現註釋掉以下行

// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

網頁顯示

302 Moved 

The document has moved here. 

「這裏」是一個重定向到給定網址的鏈接。

請幫我理解發生了什麼事!

+3

在你的函數 –

+0

年底除了下面的答案添加一個return語句,你可能也想看看[這裏](HTTPS: //sackoverflow.com/questions/3519939/make-curl-follow-redirectcts) – GentlemanMax

+0

@GentlemanMax我會添加到我的答案:) – thepieterdc

回答

3

當您使用

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$results = curl_exec($ch); 

你告訴PHP「存儲捲曲請求的輸出在$results變量和不輸出任何東西到屏幕上。

如果你想看到輸出,修改您的代碼如下至$results值返回的print_r函數:

<?php 
function curlGet($url){ 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_URL, $url); 

    $results = curl_exec($ch); 

    curl_close($ch); 
    return $results; 
} 

$packtPage = curlGet('https://www.google.com'); 

print_r($packtPage); 

如在通訊所建議的GentlemanMax ent,在你的cURL請求中包含以下行也是一個好主意。該行告訴cURL遵循重定向,因爲您正在收到一個HTTP/302狀態碼,這意味着頁面已移動。捲曲會遵循這些種使用以下額外的選項重定向:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
+0

是的。謝謝。我忘了在最後加上return語句。但是真正的302重定向讓我有些困擾。此外,它是令人困惑的是,當排除故障而不是回聲我試着var_dump或print_r和出現相同的結果。但現在我明白了更多,所以謝謝你的答案。它幫助我第一次進入cURL! – Ben