2009-04-23 82 views
2

我從很久以前就重複使用了一個curl函數,現在這個函數的行爲與我記憶中的不同。在這種特殊情況下,我正在驗證用戶的Twitter憑據。下面的代碼,因爲它現在代表:使用PHP和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); 

這是爲認證工作正常,但輸出整個JSON響應瀏覽器,這是我不想做的事。

我對捲曲不是很熟悉。我嘗試將CURLOPT_VERBOSE設置爲0併爲false,但都沒有成功。我確信這是一個非常簡單的改變,但我失去了它的功能。

感謝

回答

18

你需要這個選項:

curl_setopt(CURLOPT_RETURNTRANSFER, true); 

curl docs

CURLOPT_RETURNTRANSFER:TRUE返回 轉移作爲curl_exec返回 值的字符串( )而不是 直接輸出。

+1

真棒的

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

例如,由於一噸! – Evan 2009-04-23 19:35:39

+1

您也可以使用ob_start()和ob_end_clean()或ob_get_clean()臨時捕獲PHP的所有輸出,儘管在這種情況下Roborg的答案是正確的。 – Randy 2009-04-23 19:36:52

3

我寫了這個功能,以幫助簡化我的捲曲請求使用

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

curl_http_request($url, $options);