我正在尝试使用curl和PHP使用fullonsms.com短信网关发送短信。
以下是代码: -
<?php
session_start();
mysql_connect('localhost','root','') or die('Error connecting to database');
mysql_select_db('SMSapp') or die('Database Selection Error');
$query='Select * from contacts';
$cookie_file_path = "/cookie.txt";
$username="*****";
$password="***";
$message=urlencode("Hi buddy");
$agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://sms.fullonsms.com/login.php");
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, "MobileNoLogin=$username&LoginPassword=$password&x=16&y=14");
$html=curl_exec($ch);
if($query_run=mysql_query($query))
{
$row_count=mysql_num_rows($query_run);
if($row_count==0)
{
echo 'Zero rows received';
die();
}
else
{
for($i=0;$i<3;$i++)
{
curl_setopt($ch, CURLOPT_URL,"http://sms.fullonsms.com/home.php");
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
$tomobno=mysql_result($query_run,$i,'mobno');
curl_setopt($ch, CURLOPT_POSTFIELDS, "ActionScript=%2Fhome.php&CancelScript=%2Fhome.php&HtmlTemplate=%2Fvar%2Fwww%2Fhtml%2Ffullonsms%2FStaticSpamWarning.html&MessageLength=140&MobileNos=$tomobno&Message=$message&Gender=0&FriendName=Your+Friend+Name&ETemplatesId=&TabValue=contacts");
curl_exec($ch);
sleep(1);
}
}
}
$html = curl_exec($ch);
echo $html;
?>
该脚本适用于1个短信但是当我添加for lop和数据库的东西来动态设置$tomobno
(手机号码)时,它停止发送消息。
问题是: -
我的数据库中有三个手机号码。但我没有收到任何短信。
(我已经回应了这些数字,脚本正在挑选所有这些。问题在于CURL代码。)我是CURL中的一个tyro.Please Help。
(请不要不必要地低估这个问题)
答案 0 :(得分:0)
一些事情,更改代码,以便你可以a)轻松阅读它并b)回显你创建的内容,c)在你构建它之后对整个字符串进行urlencode。 这应该可以帮助你发现拼写错误。
猜测存储在数据库中的电话号码中有一个空格字符,可以是一个前缀或后缀。
$tomobno=mysql_result($query_run,$i,'mobno');
$param = "ActionScript=\home.php&CancelScript=\home.php";
$param .= "&HtmlTemplate=\var\www\html\fullonsms\StaticSpamWarning.html&MessageLength=140";
$param .= "&MobileNos=$tomobno&Message=$message&Gender=0&FriendName=Your+Friend+Name&ETemplatesId=&TabValue=contacts";
echo $param;
curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode( $param) );