使用PHP发送免费短信


Sending free sms using PHP

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

所以

  1. 我需要帮助来了解实际在做什么
  2. 其次,我如何在不浪费数据或不必要的页面加载的情况下修改它,以最佳方式向多人发送短信(比如将其放入循环中会是最佳的吗)。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;
?>

有一个类似的问题被问到,但接受的答案是偏离主题的,它使用不同的网关短信通过免费网关发送

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

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

2) 其次,我如何修改它以优化向多人发送短信

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

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

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

1)我发现cURL选项列表非常有用,还可以搜索"HTTP头"answers"RESTful URL"。

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