2017-03-06 100 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