0

以下のコードを使用して SMS を送信しようとしましたが、ループしても送信されません。データベースから 1 つの番号を選択した場合にのみ機能します。データベースには 5,000 を超える番号があり、それらすべてに同時に SMS を送信したいのですが、助けてください。

mysql_select_db($database_xxx, $xxx);
$query_rs = "SELECT phone FROM `notify` order by id asc LIMIT $l1 , $l2";
$rs= mysql_query($query_rs, $xxx) or die(mysql_error());
$row_rs = mysql_fetch_assoc($rs);
$totalRows_rs= mysql_num_rows($rs);

$phone = $row_rs['phone'];

// Do while loop to send sms.
while($row=mysql_fetch_assoc($rs)){


                         // Let's do some formatting and keep smiling.
    $giringirin = ereg_replace("[^0-9]", "", $phone );
    if (strlen($giringirin) == 11) { 
    $phone1=substr($giringirin, 1);
    $phone= "234$phone1";
    } elseif (strlen($giringirin) == 13){ 
    $phone = $giringirin; 
    }

extract($_POST);


//set POST variables
$url = "http://sms.xxx.com/bulksms/bulksms.php?username=$username&password=$password&message=$smsmessage&mobile=$phone&sender=$sender";
$fields = array(
        );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
//execute post
$result = curl_exec($ch);

if ($result == '1801') { echo "SMS has also been sent to the Customer ($phone) \n";} else { echo "Oooops, No sms was sent";}

//close connection
curl_close($ch);  
}
4

2 に答える 2

0

あなたのコードは混乱しています...

curl_setopt($ch,CURLOPT_POST,count($fields));

CURLOPT_POST はブール値のフラグです。投稿を行っているか、していないかのどちらかです。投稿するフィールドの数は関係ありません。

投稿する一連の変数/値を作成していますが、文字列操作を介して実行しています。CURL は、配列を取得してそのすべてを実行できるので、foreach ループ全体を

curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

あなたが使用しているextract()on$_POSTは、スクリプトの変数の名前空間を、悪意のあるユーザーが送信したいガベージで汚染します。基本的に、PHP の完全に馬鹿げた脳死状態register_globalsをもう一度複製しています。

を使用しています。eregこれは、インターネットで約 500 万年にわたって廃止されています。代わりに関数を使用する必要がありpregますl

于 2012-08-13T04:21:47.470 に答える
-1

このスクリプトをブラウザで実行するとどうなりますか? 空白ページ?何か?エラー?

変えることから始める

$url = "http://sms.xxx.com/bulksms/bulksms.php?username=$username&password=$password&message=$smsmessage&mobile=$phone&sender=$sender";

$url = "http://sms.xxx.com/bulksms/bulksms.php?username=".$username."&password=".$password."&message=".$smsmessage."&mobile=".$phone."&sender=".$sender."";
于 2012-08-13T04:19:40.527 に答える