2017-03-06 6 views
1

私はの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と新しいクエリのparamsを作っているということです。

... 
$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