2009-04-23 4 views
2

Ich benutze eine Curl-Funktion von vor langer Zeit, die sich jetzt anders verhält, als ich mich erinnere. In diesem speziellen Fall authentifiziere ich die Twitter-Anmeldeinformationen eines Benutzers. Hier ist der Code, wie es jetzt steht:Antworten mit PHP und Curl ausblenden

$cred = $_POST['twitter_username'].':'.$_POST['twitter_password']; 
$url = "http://twitter.com/account/verify_credentials.json"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_GET, 0); 
curl_setopt($ch, CURLOPT_USERPWD, $cred); 
$result = curl_exec ($ch); 
curl_close ($ch); 

Dies funktioniert gut für die Authentifizierung, sondern die gesamte JSON-Antwort an den Browser ausgibt, das will ich nicht tun.

Ich bin nicht sehr vertraut mit Curl. Ich habe versucht, CURLOPT_VERBOSE auf 0 und false zu setzen, aber keiner von beiden hat funktioniert. Ich bin mir sicher, das ist eine ziemlich einfache Veränderung irgendwo, aber ich bin auf, was es ist.

Dank

Antwort

18

Sie benötigen diese Option:

curl_setopt(CURLOPT_RETURNTRANSFER, true); 

Vom curl docs:

CURLOPT_RETURNTRANSFER: TRUE die Übertragung als eine Kette von der Rückkehr Wert von curl_exec zurückzukehren () anstatt direkt auszugeben.

+1

Awesome, dank einer Tonne Verwendung zu vereinfachen! – Evan

+1

Sie können auch immer ob_start() und ob_end_clean() oder ob_get_clean() verwenden, um alle Ausgaben von PHP temporär zu fangen, obwohl Roborgs Antwort in diesem Fall der richtige Weg ist. – Randy

3

i schrieb diese Funktion

function curl_http_request ($url, $options) 
{ 
    $handle = curl_init($url); 
    curl_setopt_array($handle, $options); 
    ob_start(); 
    $buffer = curl_exec($handle); 
    ob_end_clean(); 
    curl_close($handle); 
    return $buffer; 
} 

Beispiel meiner ROTATION fordert

$options = array(
    CURLOPT_RETURNTRANSFER => TRUE, 
    CURLOPT_USERPWD => $cred 
); 

curl_http_request($url, $options); 
+0

Perfekt arbeiten, Nizza –