Модераторы: 2man
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт отправки Sms 
:(
    Опции темы
Sl@va
Дата 16.3.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

Репутация: нет
Всего: нет



Имеется форма запроса для отправки Sms, просмотреть ее можно здесь :
http://www.megafonmoscow.ru/misc/sms
Вот ее код:
Код

<form action=sms2 name="sendsms" method="post">

  <select name="prefix">
    <option value="7926">7 926</option>
    <option value="7095">7 095</option>
  </select>

  <input name="addr" type="text">
  <input name="mlength" value="(максимум 110 символов):">
  <textarea name="message" style="width: 100%;"></textarea>
  <input name="messlen" value="110">
  <input name="transliterate" type="checkbox" checked>
  <input name="send" value="Отправить" type="submit">
  <input name="send_after_flag" value="on" type="checkbox">

  <select name="send_hour">
    <option value="-1">--</option>
    <option value="0">00</option>
    <option value="1">01</option>
    ...
    <option value="23">23</option>
  </select>

  <select name="send_minute">
    <option value="-1">--</option>
    <option value="0">00</option>
    <option value="1">01</option>
    ...
    <option value="59">59</option>
  </select>

  <select name="send_day">
    <option value="-1">--</option>
    <option value="1">01</option>
    <option value="2">02</option>
    ...
    <option value="31">31</option>
  </select>

  <select name="send_month">
    <option value="-1">--</option>
    <option value="1">Января</option>
    <option value="2">Февраля</option>
    ...
    <option value="12">Декабря</option>
  </select>

  <select name="send_year">
    <option value="-1">----</option>
    <option value="2003">2003</option>
    <option value="2004">2004</option>
  </select>

</form> 


Анализ кода формы

Анализуруя тег <form>, находим, что при нажатии на кнопку "Отправить", форма посылает запрос скрипту "sms2", который находится там же, что и страница с формой, то есть абсолютный путь к этому скрипту будет такой: /misc/sms2, и, соответственно, url: http://www.megafonmoscow.ru/misc/sms2 (напоминаю, что сама форма отправки SMS находится здесь /misc/sms, url: http://www.megafonmoscow.ru/misc/sms, так как в action написано "sms2" без слешей и других символов, то файл sms2 находится там же, где и файл sms с формой для отправки)

Фома использует метод POST для отправки данных (method="post").

В форме присутствуют следующие поля (см исходный код):
prefix - префикс номера. Так как это список (<select>), то prefix может принимать только одно из двух значений:7095 и 7926 (значения тегов <option>).
addr - ваш телефонный номер (6 знаков).
mlength - Поле, в котором написано "(максимум 110 символов):", соответственно принимает только это значение ("(максимум 110 символов):").
message - само сообщение, длинна которого по условию должна быть не более 110 символов.
messlen - в этом поле нам любезно пишется сколько осталось символов (с помощью javascript). Значение поля зависит исключительно от размера поля message и равно 110-размер message в символах. То есть еcлu message="Hello!", то messlen=110-6=104. Это будет необходимо учитывать в будущем при отправке данных.

Следующие параметры не так важны, но упомянуть о них стоит.
transliterate - флажок, отвечающий за транслитерацию. По умолчанию значение его равно "on" (не смотря на то, что в теге написано checked, значие "on" этот флажок принимает после отправки данных формы)
send_after_flag - флажок, который надо будет отметить, еcлu вы вдруг захотите отложить отправку, по умолчанию не отмечен и, соответственно, равен пустой строке.

Следующие параметры имеют смысл только при отмеченном send_after_flag
send_hour - час отправления в формате hh (00, 01 … 22), по умолчанию параметр не установлен и равен -1 (минус один).
send_minute - минута отправления в формате mm, по умолчанию равен -1.
send_day - число месяца отправления в формате dd, по умолчанию -1.
send_month - месяц отправления по-русски в родительном падеже (Января, Августа), по умолчанию -1.
send_year - год отправления в формате yyyy (2004), по умолчанию -1.

Структура запроса
Браузер пользователя при отправке данных формы, генерирует запрос для скрипта sms2.
Запрос состоит из заголовка и тела запроса. Тело запроса - это просто структурированные данные формы (как их структурировать написано ниже). Давайте лучше по-подробней разберемся с заголовком запроса.
Заголовок должен быть исключительно таким:

POST /misc/sms2 HTTP/1.1.
Host: www.megafonmoscow.ru
Referer: http://www.megafonmoscow.ru/misc/sms
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Content-Type: application/x-www-form-urlencoded
Accept: */*
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Content-Length: XXX


(Content-Length: XXX, где XXX - размер тела запроса в символах.)

В этом месте мы немного хитрим. Ведь наш скрипт будет выполняться на сервере, а это значит, что такие параметры, как Referer (откуда мы пришли) и User-Agent (Браузер), при стандартном запросе с сервера, будут отсутствовать по вполне логичным причинам (запрос идет с сервера, а не от браузера). Таким образом, нам приходится подделывать заголовок запроса, что бы все выглядело так, как будто сообщение отправляет реальный пользователь с вполне, кстати говоря, реальным IP (IP сервера, откуда будет запускаться скрипт).

Формируем скрипт.
Продвигаемся еще глубже. Формируем тело скрипта. Листинг его приведен в самом конце страницы, а здесь и далее скрипт формируется последовательно с комментариями.

Код

// Переменные
$prefix='7926';
$addr='0000000'; // телефон
$mlength='(максимум 110 символов):';
$message='Hi';
$messlen=110-strlen($message);// Зависит от длинны сообщения В мегафоне ораничение на 110 символов
$transliterate='on';
$send_after_flag='';
$send_hour='-1';
$send_minute='-1';
$send_day='-1';
$send_month='-1';
$send_year='-1';

// Тело запроса
$POSTData=
"prefix=".urlencode($prefix)."&".
"addr=".urlencode($addr)."&".
"mlength=".urlencode($mlength)."&".
"message=".urlencode($message)."&".
"messlen=".urlencode($messlen)."&".
"transliterate=".urlencode($transliterate)."&".
"send=".urlencode('Отправить')."&".
"send_hour=".urlencode($send_hour)."&".
"send_minute=".urlencode($send_minute)."&".
"send_day=".urlencode($send_day)."&".
"send_month=".urlencode($send_month)."&".
"send_year=".urlencode($send_year);

$len=strlen($POSTData); // Размер в символах тела запроса
$nn="\r\n"; // возврат каретки и символ новой строки

// Запрос с заголовком и телом
$request=
"POST /misc/sms2 HTTP/1.1".$nn.
"Host: www.megafonmoscow.ru".$nn.
"Referer: http://www.megafonmoscow.ru/misc/sms".$nn.
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)".$nn.
"Content-Type: application/x-www-form-urlencoded".$nn.
"Accept: */*".$nn.
"Accept-Encoding: gzip, deflate".$nn.
"Connection: Keep-Alive".$nn.
"Content-Length: $len".$nn.$nn.
"$POSTData";

// Открываем сокет и отсылаем запрос скрипту

$socket='www.megafonmoscow.ru';

if ($fp = fsockopen($socket, 80, &$errno, &$errstr, 30)) {
fputs($fp,$request);
echo fgets($fp,1024);
fclose($fp);
}
else {
print "Невозможно присоединиться, по причине:$errstr ($errno)<br>\n"; exit;
}


Но вот проблема, теперь для отправки Sms необходимо ввести код, который изображон на картинке. Вот как решить оставшуюся проблему ?
Может кто знает решение ?
Зараее спасибо.
PM MAIL WWW ICQ Skype   Вверх
2man
Дата 16.3.2006, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: 15
Всего: 71



Цитата(Sl@va @ 16.3.2006, 19:36 Найти цитируемый пост)
Но вот проблема, теперь для отправки Sms необходимо ввести код, который изображон на картинке. Вот как решить оставшуюся проблему ?
Может кто знает решение ?

http://www.codenet.ru/webmast/php/Security-Images-in-PHP/


--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
Sl@va
Дата 16.3.2006, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

Репутация: нет
Всего: нет



Но там описано как раз как сгенерировать данную картинку. А нужно решить обратную проблему. Как разобать текст, который изображен на этой картинке. Ведь при отправки Sms сообщения с сайта, там появляется картинка, на которой изображен некоторый текст, где предлагается его вести ф форму, иначе отправка Sms не получится
PM MAIL WWW ICQ Skype   Вверх
2man
Дата 16.3.2006, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: 15
Всего: 71



Извини, но эти картинки для того и созданы, что текст (цифры) на них невозможно прочесть. Картинки генерируется при каждом обращении. Сделано специально для защиты от спамеров


--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
Sl@va
Дата 17.3.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 22.11.2004
Где: Нижний Новгород

Репутация: нет
Всего: нет



Понятно, но идея у меня совсем другая. Я хотел сделать скрипт, который через определенные промежутки времени (например 30 мин) проверяет почтовый ящик, и если пришло новое письмо, то он отсылает тебе Sms с адресом отправителя и заголовком письма. Была бы весьма удобная веш ! smile
PM MAIL WWW ICQ Skype   Вверх
R.M.
Дата 21.3.2006, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: нет
Всего: 30



Sl@va, у мегафона есть такая функция, поищи на сайте я её юзаю smile


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие движки / фрейморки | Следующая тема »


 




[ Время генерации скрипта: 0.0602 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.