使用PHP发送免费短信

时间:2013-07-18 09:16:02

标签: php curl sms-gateway

我正在尝试开发一个基于PHP的应用程序,将跨越印度的短信发送给从数据库中挑选的联系人。搜索了几个小时后,我发现以下工作(我测试过)脚本使用fullonsms.com作为sms网关,但它一次发送一条消息,然后加载主页。 但我不太了解卷曲。

所以

  1. 我需要帮助才能了解实际做了什么。
  2. 其次,我如何修改它以最佳地将短信发送给多个人(如将它放在循环中是最佳的),而不浪费数据或不必要的页面加载。 3.发送每条短信后,它会加载主页。所以在发送短信之前不会尝试加载主页。如果是,我可以删除已加星标(** **)的行来阻止这一点。
  3. 这是我的代码:

    <?php
        $cookie_file_path = "/cookie.txt"; 
        $username="username";
        $password="password";
        $tomobno="1234567890";
        $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_fie_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);
            **curl_setopt($ch, CURLOPT_URL,"http://sms.fullonsms.com/home.php");**
            curl_setopt($ch, CURLOPT_USERAGENT, $agent);
            curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_fie_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);
            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");
    
              $html = curl_exec($ch);
              echo $html;
    ?>
    

    有一个类似的问题,但接受的答案不在主题上,而是使用不同的网关SMS sending through free gateway

2 个答案:

答案 0 :(得分:4)

  

1)我需要帮助来了解实际做了什么。

代码正在向服务发送两个HTTP请求。第一个请求使用您的用户名和密码登录,并存储下一个请求的会话cookie。第二个请求是实际触发发送的请求,它将移动号码和其他详细信息作为POST数据。由于cookiejar,第二个请求能够使用第一个请求创建的会话。

  

2)其次,如何修改它以最佳方式将短信发送给多个人

如果该服务允许您输入多个手机号码(例如以逗号分隔),那么这将是最优的,因为它只需要将两个请求发送到所有手机号码。

如果没有,您将必须循环第二个请求,以便每个手机号码有一个请求。请记住更改硬编码的POST数据,以便使用下一个手机号码和名称,而不是每次都发送相同的号码。

我还建议在每次循环迭代后暂停一段时间,以防止发送请求太快。例如,您可以使用sleep(1)等待1秒钟。

答案 1 :(得分:0)

1)我发现cURL options列表非常有用,还有google'HTTP headers'和'RESTful URL'。

2)您可以将代码包装在几个函数中,即确定是否只有一个或多个收件人(可能使用is_array())的函数,然后是一个具有{{1}等参数的函数它使用$message, $recipients, $from, etc..循环通过第一个函数传递给它的接收者