2017-03-06 103 views
1

我正在利用CURL並遇到了一個奇怪的行爲。curl的奇怪行爲

$url = 'https://makesif.com/sms/bulksms_m.php';  
foreach($msg as $v) { 
$smsparam=array('number' => '+974'.$v[1],'message' => $v[2]); 
$url = $url . "?" . http_build_query($smsparam, '&'); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
curl_exec($ch); 
curl_close($ch); 
        }  

在這種用法中,捲曲用可變'number'每次用捲曲請求相同的值發送。但是當我將URL var定義放在每個命令中時,它就是正確的。這怎麼會發生?

回答

1

的問題是,你正在串連與以前的URL新的查詢參數在每次迭代:

... 
$url = $url . "?" . http_build_query($smsparam, '&'); // <---- 
... 

因此,在某些迭代的$url可能看起來像:

"https://makesif.com/sms/bulksms_m.php?number=%2B974&message=0?number=%2B974&message=1?number=%2B974&message=2?number=%2B974&message=3?number=%2B974&message=4?number=%2B974&message=5" 

正確的方法是將新的查詢參數添加到最初的$url,如下所示:

$url = 'https://makesif.com/sms/bulksms_m.php';  
foreach ($msg as $v) { 
    $smsparam = array('number' => '+974'.$v[1],'message' => $v[2]); 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url . "?" . http_build_query($smsparam)); 
    .... 
+0

謝謝你的光。 – Bineesh

+0

@Bineesh,不客氣 – RomanPerekhrest