2009-04-23 6 views
2

Je réutilise une fonction curl depuis longtemps qui agit maintenant différemment de ce dont je me souviens. Dans ce cas particulier, j'authentifie les informations d'identification Twitter d'un utilisateur. Voici le code tel qu'il est maintenant:Masquage des réponses en utilisant PHP et Curl

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

Cela fonctionne bien pour l'authentification, mais fournir en sortie toute la réponse JSON au navigateur, que je ne veux pas faire.

Je ne suis pas très familier avec curl. J'ai essayé de placer CURLOPT_VERBOSE à 0 et faux, mais aucun travaillé. Je suis sûr que c'est un changement assez simple quelque part, mais je suis perdu sur ce que c'est.

Merci

Répondre

18

Vous devez cette option:

curl_setopt(CURLOPT_RETURNTRANSFER, true); 

De l'curl docs:

CURLOPT_RETURNTRANSFER: TRUE pour retourner le transfert comme une chaîne de retour valeur de curl_exec () au lieu de en le sortant directement.

+1

Impressionnant, merci une tonne! – Evan

+1

Vous pouvez aussi toujours utiliser ob_start() et ob_end_clean() ou ob_get_clean() pour intercepter temporairement toutes les sorties de PHP, bien que la réponse de Roborg soit la bonne dans ce cas. – Randy

3

i a écrit cette fonction pour simplifier ma demande CURL

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; 
} 

exemple d'utilisation

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

curl_http_request($url, $options); 
+0

Fonctionne parfaitement, Nice –

Questions connexes