0

我正在尝试开发一个基于 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;
?>

有一个类似的问题,但接受的答案不在主题范围内,它使用不同的网关SMS 通过免费网关发送

4

2 回答 2

4

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

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

2)其次,如何修改它以最佳地向多人发送短信

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

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

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

于 2013-07-18T09:25:44.910 回答
0

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

2)您可以将代码包装在几个函数中,即一个确定是否只有一个或多个收件人(可能使用is_array())的函数,然后是一个具有参数的函数,例如$message, $recipients, $from, etc..which 使用 aforeach()来遍历收件人由第一个函数传递给它

于 2013-07-18T09:36:13.910 回答