2017-05-24 5 views
0

Ich habe Code hier, dass sollte zurück zu mir den Quellcode der Webseite.einfach cURL funktioniert nicht

<?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); 

Soweit ich verstehe, sollte dieser Code zurückkehren und den Quellcode dieser Webseite aussprechen. Ich bekomme jedoch eine leere Seite, wenn ich diesen Code ausführe.

Nach der Suche überall für das Verständnis, warum dies nicht wie erwartet funktioniert Ich troubleshooted und stellte fest, dass die folgende Zeile auszukommen

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

die Webseite zeigt

302 Moved 

The document has moved here. 

‚hier‘ ist Ein Link, der zu der angegebenen URL umleitet.

Bitte helfen Sie mir zu verstehen, was los ist !!

+3

eine return-Anweisung am Ende Ihrer Funktion –

+0

unten Neben der Antwort hinzufügen möchten, können Sie auch wollen, betrachten [diese] (https: //stackoverflow.com/questions/3519939/make-curl-follow-redirects) – GentlemanMax

+0

@GentlemanMax Ich werde das zu meiner Antwort hinzufügen :) – thepieterdc

Antwort

3

Wenn Sie

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

Sie sagen PHP „, um die Ausgabe der cURL Anfrage zu Speichern in der $results Variable und nicht ausgeben etwas auf den Bildschirm.

Wenn Sie sehen möchten, Ausgang, ändern Sie den Code wie folgt den Wert von $results auf die print_r Funktion zurückzukehren:

<?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); 

wie GentlemanMax in einem comm vorgeschlagen Es kann auch sinnvoll sein, die folgende Zeile in Ihre cURL-Anfrage einzufügen. Diese Zeile weist cURL an, Redirects zu folgen, da Sie einen HTTP/302 Statuscode erhalten, der bedeutet, dass die Seite verschoben wurde. Curl kann diese Art von Umleitungen mit dem folgenden zusätzlichen Option folgen:

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

ja. Danke. Ich habe vergessen, die Return-Anweisung am Ende hinzuzufügen. Aber es waren wirklich die 302 Redirects, die mich etwas beunruhigten. Außerdem war es verwirrend, dass ich bei der Fehlersuche anstatt des Echos var_dump oder print_r ausprobierte und das gleiche Ergebnis erschien. Aber jetzt verstehe ich mehr, danke für die Antwort. Es hat mir bei meinem ersten Ausflug in cURL geholfen! – Ben

Verwandte Themen