php смс с сайта
Как отправлять текстовые сообщения с помощью PHP
Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)
В этом уроке мы рассмотрим основы отправки текстовых сообщений с помощью PHP.
Обзор
Отправка текстового сообщения (SMS) на самом деле довольно проста.
Ниже приведена упрощённая схема передачи сообщения из веб-приложения на беспроводное устройство.
Большинство беспроводных сетей имеют шлюз SMS, посредством которого сообщения электронной почты могут отправляться в виде текстовых сообщений на мобильное устройство. Это хорошо, потому что, с точки зрения разработчика, он вообще свободен, однако, это не бесплатный сервис для конечного пользователя. Плата с получателя сообщения берётся, а сообщения, отправленные по электронной почте, будут считаться текстовым сообщением, отличным от сети.
Email на SMS
Чтобы отправить SMS по электронной почте, обычно требуется только две вещи:
Для большинства носителей можно придерживаться следующего соглашения:
Чтобы отправить текст Mr. Example, вы можете просто добавить 3855550168@vtext.com в любой почтовый клиент, набрать сообщение и нажать отправить. Это отправит текстовое сообщение на номер телефона +1 (385) 555-0168 по беспроводной сети Verizon.
Например, я отправлю текстовое сообщение самому себе с помощью Gmail.
Когда мой телефон получит сообщение, оно должно выглядеть так:
PHP’s mail функция
Давайте сделаем еще один шаг. Используя SMS Gateway, мы можем отправить текстовое сообщение по электронной почте, используя функцию mail PHP. Функция mail имеет следующую запись:
Можете почитать ещё here.
В ранней версии функциональности мы могли бы написать следующий PHP-код:
Тест-драйв
Проведём тест с PHP, чтобы убедиться, что всё настроено правильно, и что mail функция фактически отправит текстовое сообщение. Используя следующий код, мы можем запустить:
Когда мой телефон получит сообщение, оно выглядит так:
Если вы получаете сообщение об ошибке, см. раздел troubleshooting.
Добавление удобства
Разметка
Избегая основ, давайте рассмотрим эту идею и обернём вокруг неё пользовательский интерфейс. Сначала мы создадим простую форму:
Стиль
Далее мы брызнем CSS:
Это даст нам следующий простой вид:
Скрипт
Самой важной частью этого является скрипт PHP. Мы напишем этот фрагмент кода:
Примечание: метод mail только уведомляет, было ли отправлено сообщение. Это не даёт возможности проверить, было ли сообщение успешно принято сервером-получателем или почтовым ящиком.
Окончательный код
Исправление проблем
Ошибка локального домена
. вам придется установить и настроить почтовый сервер. Это выходит за рамки данного урока. Однако, если вы работаете на своей локальной машине, переход на нечто вроде XAMPP может решить эту проблему. Или попробуйте установить Mercury Mail вместе с WAMP, MAMP или LAMP (или SAMP или OAMP и пр.) систему (много разных «AMP»).
PHPMailer
Другим вариантом (методом, который я предпочитаю) является использование PHPMailer. Ниже представлен пример использования PHPMailer для подключения к SMTP-серверу Gmail и отправки сообщения.
Его использование так же просто, как включение класса в ваш скрипт.
Это должно распечатывать что-то вроде:
Может потребоваться немного больше, чтобы настроить соединение в зависимости от вашей ситуации. Если вы планируете использовать Gmail, Google предоставил information on connecting.
Заключение
Существует множество методов для выполнения задачи отправки SMS через веб-приложение. Этот метод действительно предназначен для низкоуровневых сообщений (скорее всего, менее 1000 текстовых сообщений в месяц), а разработчики хотят оставить ноги сухими, не размахивая наличными. Другие варианты включают:
Этот урок никоим образом не является всесторонним обзором отправки текстовых сообщений с PHP; но это должно заставить вас начать! Надеюсь, этот урок вас заинтересовал. Большое вам спасибо за чтение!
Создай свой скрипт отправки смс с сайта через API
Как создать свой скрипт отправки смс с сайта?
Вы можете настроить скрипт отправки смс таким образом, чтобы отправка смс через api происходила по тем правилам, которые вы создаете сами.
Пройдя регистрацию на сайте Вы получаете 10 руб. для тестирования абсолютно бесплатно и можете проверить работоспособность нашего API смс Вы сможете воспользоваться готовым скриптом для бесплатной отправки смс в тестовом режиме.
Одним из основных преимуществ использования API, является возможность организовать не только смс уведомления, но и смс рассылки, наладив простой скрипт смс рассылки, который напрямую получает информацию из вашей базы данных с клиентами. Вам не придется выгружать базы клиентов в формате *.csv и настраивать смс рассылки вручную при помощи программы SMS AIR Snder или Web кабинета. Один раз наладив интеграцию через API Вы также освободите себя от рутинных проблем по организации массовых смс рассылок. Для организации масштабных смс рассылок мы предлагаем использовать наш расширенный API, который позволяет отослать одним запросом до 200 смс сообщений, таким образом, вы сможете обеспечить максимальную скорость рассылки, рассылая 500 000 смс в течение часа.
PHP скрипт отправки SMS
PHP является самым распространенным языком веб программирования. На PHP сделано боле 90% сайтов Интернета, поэтому отправкой sms сообщений через php пользуются чаще всего. Специально для Вас мы разработали оптимальный sms php скрипт. Используя данный скрипт и наши API Вы сможете с легкостью интегрировать наш смс сервис в ваши бизнес процессы. Мы всегда идем навстречу клиенту и готовы помочь разработать скрипты для отправки смс на таких языках как: 1C, ASP, Python, Perl.
С Уважением,
Команда SMSfeedback
Свой личный SMS-шлюз. Часть 2 – создаём API и форму отправки
Представляю вам вторую часть из серии статей по созданию своего шлюза.
В первой части мы настроили Gammu, рассмотрели особо интересные параметры и успешно произвели отправку SMS сообщения. Сейчас нам предстоит задача посложнее – создать некую программную прослойку (API), для того, чтобы можно было работать со шлюзом путем отправки запросов на этот API. В первую очередь это комфорт, во вторую – большое количество дополнительных возможностей.
Постановка задачи
Первое, что нужно для себя понять, какими свойствами и возможностями должен обладать наш код, что мы хотим от него получить и как с ним взаимодействовать. Для этого я поставил для себя пару вопросов и постарался максимально на них ответить.
На чем будем писать backend
Тут все просто, что умеем, на том и пишем, поэтому в моем случае – PHP
Авторизация
Конечно. Сервис будет смотреть в интернет, поэтому авторизация обязательна.
Один пользователь – одна sim-карта?
Конечно нет. У нас сервис для личного пользования и мы хотим иметь один логин, но при этом отправлять с нескольких номеров. Но если появится необходимость выделить один шлюз под конкретный сервис, мы должны иметь возможность добавления пользователей.
Один запрос – один адресат?
Нет. В одном запросе с одним текстовым сообщением должна быть возможность указать несколько адресатов. Суть этого понятна. Например я отслеживаю наличие ЭЭ на даче и в случае отключения хочу получить уведомление на все свои телефоны, а может даже телефон супруги… почему бы и нет, ведь уведомление важное.
История отправленных сообщений
Конечно, история это наша важная составляющая жизни, поэтому ее мы всегда храним
Балансировка нагрузки на карты
Да. Мы обладаем чувством меры и будем отправлять с одной карты не более какого-то числа сообщений, а значит их нужно считать и перед выбором шлюза проверять на исчерпание лимита.
Задача на разработку поставлена, цель ясна, итак приступим
Первое что мы сделаем, определим структуру база данных. Без нее, при наших потребностях никак. Использовать будем MySQL.
Дальше нужно будет написать пару классов, к которым мы были обращаться.
Приступим к созданию БД и создание таблиц
Я буду использовать несколько таблиц для:
Стоит подробнее остановиться на таблице с данными шлюза и используемых полей – smsc_gateway. Здесь мы используем:
В итоге мы получаем такую последовательность действий.
Пользователь отправляет запрос с параметрами:
Значения flash и replacemessages мы рассматривали в прошлой статье. В можно указать несколько номеров телефонов через «,». + в номере телефона указывать не нужно, но обязательно указывать номер в международном формате (для России это 7…). Так же в стоку можно добавить еще один параметр – &attempts= – количество попыток внутри одной отправки, то есть, если можем при отправке вернул ошибку, пытаться ли отправить тут же еще раз?
Вот, что происходит под капотом smsc.php
Первым делом мы подключаем файл с настройками – config.php:
делаем небольшую проверку на XSS, а далее проверяем авторизацию, вызывая метод класса Users_Auth::do($PDO):
Если получили false – авторизация не удалась, возвращаем код и описание ошибки в json, если необходимо.
Если авторизация успешная вызываем $sms_handle->save(), проверяем переданы ли обязательные параметры – телефон и текст сообщения, проверяем в БД статус пользователя, разбираем строку запроса и приводим в нужный нам вид, удаляем пробелы и «+» из номера телефона, а также разделяем их по запятой. Таким образом получаем массив номеров телефонов и текста сообщения, которое нужно на них отправить. Делаем из этого json и сохраняем в таблицу очереди на отправку. Проверка на наличие телефона обязательна. Если попытаться отправлять сообщения без указания номера телефона, возникнет ошибка в Gammu, и шлюз будет занят на несколько секунд. Когда шлюз освободится возникнет аналогичная повторная ситуация, что в свою очередь создаст так называемую «пробку» и последующие сообщения из очереди просто не смогут уйти.
Дальше мы используем простой скрипт, который поставим в cron и будем вызывать раз в 5-10 секунд (по вкусу) – send_queue.php
Он будет обращаться к методу класса обработчика сообщений SMS_data_handle->send(). Здесь уже начинается самое интересное.
Мы получаем сообщение за последние 10 минут без тегов статуса. Если нашли такое, ставим на него тег — process и берём в работу.
Извлекаем из тела json uuid пользователя, обращаемся к таблице и получаем список активных шлюзов. Идем в таблицу со счётчиком и проверяем, не превышен ли лимит на отправку. Если мы получили активный шлюз и счётчик не превышен, ставим на него тег — lock, чтобы никакой другой процесс уже не смог параллельно к нему обратиться. Все вызовы происходит внутри метода send(), но логика раскидана по другим методам класса. По указанному выше описанию работы метода эти обращения легко видны.
Далее мы создаем объект класса $send_proc = new Gammu_SMS($param) с параметрами и обращаемся к методу $send_proc->send($attr) с атрибутами
Весь код метода send():
Если объект вернул true, то переносим сообщение в архив и увеличиваем счётчик отправленных сообщений. Иначе снимаем тег proccess и через некоторое время будет повторная попытка отправки по cron.
Особо внимательные заметили, что мы вызываем метод с дефолтным параметром равным одному – send($с = 1). Параметр $c заложен «на перспективу» и позволяет нам, в случае необходимости получать пачку сообщений из базы данных и обрабатывать их отправку в цикле. Для этого в файле, вызываемом в cron нужно в вызове метода указать число сообщений для выборки их БД – $sms_handle->send(<число>);
Обратим внимание еще на один момент. В файле smsc.php есть возможность отправлять сообщения сразу после того, как оно было добавлено в БД. Для этого нужно раскомментировать следующую строку:
Это позволит нам отказаться от cron, но есть один нюанс – желательно использовать этот метод, если вы отправляете сообщения только на один номер и запросы к шлюзу не могут быть чаще чем раз в 30 секунд. Иначе возможны ошибки связанные с наложением запросов и если шлюз занят, то сообщение не отправится.
Теперь наш шлюз работает через API и умеет отправлять сообщения.
Ну и бонусом мы сделаем простую форму для отправки сообщений с сайта. Ее код не нуждается в пояснении, она просто принимает от вас тест и отправляет POST-запрос на указанный нами скрипт. Единственное в блоке отправки ajax нужно заменить url: «/ » на адрес вашего скрипта smsc.php
Итак подведем итоги проделанной работы. Мы создали аппаратную платформу, научились отправлять сообщения через терминал и расширили возможности системы собственным API для легкого доступа к шлюзу устройств способных отправлять GET/POST-запросы. Хранить историю и балансировать нагрузку между картами и прочее. Все это сильно упрощает работу со шлюзом и позволяет хранить все в одном сервисе.
Внимание, я не претендую на великолепную красоту кода и буду рад любой объективной критике для понимания своих ошибок (в случае наличия) и совершенствования навыков.
Отправка SMS при помощи PHP
В наше время SMS широко применяются в веб-технологиях. Их используют для того, чтобы сообщить клиентам о свежих новостях, событиях и продуктах. Именно поэтому растёт рост разработчиков, которые интересуются данным инструментом. В этом уроке мы рассмотрим фундаментальные основы отправки текстовых сообщений при помощи PHP.
Вступление
Для того, чтобы отправить SMS через PHP не нужно много трудиться. Ниже вы можете увидеть схему, которая показывает весь процесс отправки текстового сообщения с веб-приложения на беспроводное устройство.
Большинство беспроводных сетей имеют в наличии инструмент, который преобразовывает email сообщения в SMS. Для разработчиков это является бесплатным, а для конечных получателей не всегда, т.к. им может прийти счёт за не сетевое сообщение.
Email в SMS
Для того, чтобы превратить email сообщение в SMS, вам понадобятся 2 вещи:
Оно может выглядеть приблизительно так: phoneNumber@domainName.com
Для того, чтобы отправить SMS мистеру Example, вам необходимо в графе получателя в вашем почтовом клиенте написать 3855550168@vtext.com и отправить письмо. Оно будет доставлено на номер +1 (385) 555-0168 через беспроводную сеть Verizon.
К примеру, я пошлю сообщение самому себе через Gmail:
Когда я получу сообщение оно будет выглядеть следующим образом:
Функция mail()
Давайте двигаться дальше. Для отправки SMS сообщений мы можем использовать всеми известную функцию mail(), которая имеет следующую сигнатуру:
Тут вы можете узнать о ней больше.
Переделаем наш пример:
Тестируем
Давайте же проведём тест и убедимся, что через функцию mail() можно отправлять SMS сообщения. Используем следующий код:
Сообщение, которое пришло на мой мобильный телефон выглядит так:
Как вы видите, сообщение пришло через систему Gmail. Это произошло из-за того, что я выставил соответствующие настройки для отправки сообщений с локальной машины.
Добавляем Юзабилити
Теперь я хочу предложить вам создать небольшую форму для отправки SMS с сайта. Она имеет следующую структуру:
Стиль
Давайте немного её оформим:
Вот что у нас получилось:
Пишем скрипт
Это сама сложная часть данного урока. Прошу внимания:
Финальный код
Проблемы, которые могли у вас возникнуть
Ошибки на локальном хосте
Для того, чтобы пользоваться функцией mail у вас должен быть настроен локальный почтовый сервер. Если он у вас есть, то отправка сообщения произойдёт успешно. Если нет, то вы получите сообщение типа этого:
Warning: mail() [function.mail]: Failed to connect to mailserver at «localhost» port 25, verify your «SMTP» and «smtp_port» setting in php.ini or use ini_set() in C:\wamp\www\sms\mail-test.php
… для того, чтобы всё заработало, вам необходимо поставить mail сервер, но это не входит в рамки данного урока. Если у вас на локальной машине установлен XAMPP http://www.apachefriends.org/en/xampp.html, то вы с лёгкостью исправите ситуацию. Если же у вас WAMP, MAMP, LAMP, SAMP или OAMP, попробуйте установить Mercury Mail
PHPMailer
Для того, чтобы не возиться с локальным почтовым сервером, я предлагаю воспользоваться PHPMailer-ом http://phpmailer.worxware.com/. Ниже я приведу пример подключения PHPMailer-а к Gmail SMTP серверу, через который вы сможете отправлять сообщения.
Данный код надо просто заинклудить в ваш скрипт:
Данный код должен вывести что-то подобное:
В вашем случае может быть придётся поиграться с настройками. Если вы планируете использовать Gmail, то эта информация будет вам полезна.
Вывод
Конечно, существуют и другие техники отправки текстовых сообщений. Этот способ подойдёт тем, кто будет отправлять не больше 1000 SMS в месяц. Альтернативы данной системы:
Я надеюсь у меня получилось осветить тему отправки SMS сообщений через PHP. Надеюсь урок вам понравился. Спасибо за внимание.
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.net.tutsplus.com/tutorials/php/how-to-send-text-messages-with-php/
Перевел: Станислав Протасевич
Урок создан: 23 Февраля 2011
Просмотров: 148913
Правила перепечатки
5 последних уроков рубрики «PHP»
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Отправка СМС с сайта
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Отправка СМС
Здравствуйте! Есть три поля: имя, номер телефона и данные. Нужно с этих полей отправить.
Отправка смс через сайт
Добрый день, уважаемые пользователи. Читал где-то что можно отправлять смс через php, через.
Отправка форм с чужого сайта
Здравствуйте,вот задачка: Допустим нам даны 10 id-шников разных людей в вк Задача автоматически.
не понимаю в чем проблема отправки смс с сайта.
вот статья на эту тему: Отправка СМС с сайта
Ну вот тебе готовое вставляй работает
Код для запуска формы отправки SMS с Вашего сайта
Рисунок можете ставить любой, писать в ссылке что хотите.
Запуск формы с дополнительными параметрами
Форму можно запускать со следующими дополнительными параметрами:
setfrom*- устанавливает почтовый адрес, который виден на экране телефона перед текстом sms. Адрес не обязательно должен быть реальным, но в нем обязательно должен присутствовать знак «@» и в наборе символов после этого знака должна присутствовать точка. Он может состоять из латинских букв и цифр, например: privet@vasja.pupkin Длина адреса не должна превышать 19 символов. Такая подстановка адреса поддерживается не всеми мобильными операторами!*
links*- устанавливает, показывать или нет наши ссылки «на главную», «в дурдом» и «справка». Если links=no ссылки не показываются (по умолчанию links=yes).*
Параметры «col» устанавливают цвета различных элементов формы, их значения задаются в обычном html-формате, но без «#». (Края диапазона: 000000-черный, ffffff-белый)*
bcol*- цвет фона формы (по умолчанию bcol=ADD8E6)*
col0*- цвет заголовка «Отправка SMS» (по умолчанию col0=000066)*
col1*- цвет надписей «Номер», «Текст» и префикса перед полем ввода номера (по умолчанию col1=000000)*
col2*- цвет счетчиков (по умолчанию col2=ffffff)*
col3*- цвет слова «translit» (по умолчанию col3=21A121)*
col4*- цвет текста в полях, заполняемых пользователем (по умолчанию col4=000033)*
col5*- цвет сообщений об ошибках (по умолчанию col5=c00000)*
Дополнительный параметр (либо строка параметров) указывается после url запрашиваемой страницы, отделяясь от него знаком «?». Между собой параметры разделяются знаком «&».*
Например:*
. ipsms.ru/sendsms.php?setfrom=tamara@nedorogo.dam*
. ipsms.ru/sendsms.php?setfrom=729-29-87@MOJ.MOB*
. ipsms.ru/sendsms.php?setfrom=vasja@pupkyn.ru&links=no*
. ipsms.ru/sendsms.php?links=no&bcol=378798&col0=55f9c0&col1=00ff00&col 2=ffff00&col3=ff0000&col4=ff0066*
Отправка SMS с Вашего e-mail
Вы можете также приобрести наш скрипт отправки sms (без базы мобильных операторов). Это позволит Вам организовать отправку sms непосредственно с Ваших почтовых ящиков, контролировать доставку sms, а также получать ответы с мобильных телефонов.
Возможность отправки сообщений длиной больше стандартных 160 символов
Контроль валидности номера
Контроль длины текста
Редактируемая адресная книга (хранится на стороне пользователя)
Быстрый выбор из списка последних набранных номеров*
Отключаемая автоматическая транслитерация
Защита от массовых автоматических рассылок
Защита от нецензурных выражений
Контроль доставки сообщений (если это поддерживается мобильным оператором)
Возможность получения ответов с телефонов
Язык программирования: PHP
Метод отправки sms: EmailToSMS
Скрипт оптимизирован для уменьшения нагрузки на web-сервер