从数据库发送批量短信

时间:2012-08-13 04:12:51

标签: php mysql database sms

我一直在尝试使用下面的代码来发送短信但是当我循环时它不会发送。它只适用于我从数据库中选择一个数字。我在数据库中有超过5,000个号码,并希望同时向所有号码发送短信,请帮忙。

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

2 个答案:

答案 0 :(得分:0)

您的代码令人困惑......

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

CURLOPT_POST是一个布尔标志。要么你正在做一个帖子,要么你不是。您发布的字段数量无关紧要。

您正在构建一系列要发布的变量/值,但是通过字符串操作来完成。 CURL完全能够获取数组并为您完成所有这些操作,将整个foreach循环减少到

curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

你在extract()上使用$_POST,这会污染你的脚本的变量命名空间,恶意用户会发送任何垃圾 - 你基本上复制了PHP完全没脑子的死脑{{1}一遍又一遍。

您使用的是register_globals,已被弃用了大约500万互联网年。您应该使用ereg函数而不是

答案 1 :(得分:-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."";