Отправка бесплатных смс с помощью PHP

Я пытаюсь разработать приложение на основе PHP для отправки смс по Индии контактам, выбранным из базы данных. После нескольких часов поиска я нашел следующий работающий (я протестировал его) скрипт, который использует fullonsms.com в качестве шлюза для смс, но отправляет одно сообщение за раз, а затем загружает домашнюю страницу. Но я мало что знаю о керне.

So

  1. Мне нужна помощь, чтобы понять, что на самом деле делается.
  2. Во-вторых, как я могу изменить его, чтобы оптимально отправлять смс нескольким людям (например, будет ли оптимально поместить его в цикл) без потери данных или ненужных загрузок страниц. 3. После отправки каждого SMS загружается домашняя страница. Поэтому не будет ли он пытаться загрузить домашнюю страницу перед отправкой SMS. Если да, могу ли я удалить строку со звездочкой (** **), чтобы предотвратить это.

Вот мой код:

<?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 через бесплатный шлюз


person Insane Coder    schedule 18.07.2013    source источник
comment
проверьте документацию API, который вы используете, на этот вопрос нет общего ответа   -  person    schedule 18.07.2013
comment
@Dragon: fullonsms.com не предоставляет никакого официального API.   -  person Insane Coder    schedule 18.07.2013
comment
затем используйте смс-предоставление, которое делает   -  person    schedule 18.07.2013
comment
@Dagon: Не могли бы вы помочь мне понять код curl.   -  person Insane Coder    schedule 18.07.2013
comment
если они не предоставляют API, который, вероятно, не хочет, чтобы вы это делали, просто постарайтесь не получить бан.   -  person    schedule 18.07.2013
comment
@Dagon: Это просто учебный проект. Я не буду заниматься нелегальной работой, просто 4-5 смс и все.   -  person Insane Coder    schedule 18.07.2013


Ответы (2)


1) Мне нужна помощь, чтобы понять, что на самом деле делается.

Код отправляет в службу два HTTP-запроса. При первом запросе выполняется вход с вашим именем пользователя и паролем, и он сохраняет файлы cookie сеанса для следующего запроса. Второй запрос — это тот, который фактически инициирует отправку, он принимает номер мобильного телефона и другие данные в качестве данных POST. Второй запрос может использовать сеанс, созданный первым запросом из-за cookiejar.

2) Во-вторых, как я могу изменить его, чтобы оптимально отправлять смс нескольким людям?

Если служба позволяет вам вводить несколько мобильных номеров (например, разделенных запятыми), то это будет наиболее оптимальным, поскольку для отправки на все мобильные номера потребуется только два запроса.

Если нет, вам придется зациклить второй запрос, чтобы на каждый номер мобильного телефона был один запрос. Не забудьте изменить жестко закодированные данные POST, чтобы они использовали следующий номер мобильного телефона и имя, а не отправляли каждый раз на один и тот же номер.

Я бы также предложил сделать паузу на некоторое время после каждой итерации цикла, чтобы предотвратить слишком быструю отправку запросов. Вы можете использовать sleep(1), например, чтобы подождать 1 секунду.

person MrCode    schedule 18.07.2013
comment
Сэр, у меня есть один вопрос - как мне выйти из системы в конце? - person Insane Coder; 18.07.2013
comment
Вам не нужно выходить из системы, потому что сеанс просто истечет по истечении срока, но если вы действительно хотите, вам нужно будет увидеть, как они выполняют запрос на выход из системы на своем сайте, чтобы иметь возможность реплицировать его с помощью cuRL. Например, это может быть запрос POST или GET с некоторыми параметрами. - person MrCode; 18.07.2013
comment
Что означает строка curl_setopt($ch, CURLOPT_URL,"http://sms.fullonsms.com/home.php"); в приведенном выше коде? Не будет ли он без необходимости загружать домашнюю страницу после каждого SMS? Можно ли ее устранить? - person Insane Coder; 18.07.2013
comment
Нет, вам не нужно это сохранять, home.php — это скрипт, который запускает отправку, когда вы отправляете в него данные, поэтому, если вы его уберете, ничего не будет отправлено. Строка просто устанавливает URL-адрес для запроса cURL. - person MrCode; 18.07.2013

1) Я считаю список параметров cURL очень полезным, а также гугл ' Заголовки HTTP» и «RESTful URL».

2) Вы можете обернуть код в пару функций, то есть функцию, которая определяет, есть ли только один или несколько получателей (возможно, используя is_array()), а затем функцию, которая имеет такие параметры, как $message, $recipients, $from, etc.., которая использует foreach() для циклического прохождения получателя. (s) передается ему первой функцией

person verbumSapienti    schedule 18.07.2013