| ПрикладиФорма для відправки SMS-повідомленьДля відправки SMS-повідомлень зі свого сайту можна скористатись наступним прикладом HTML-форми і відповідного
PHP-скрипта, що обробляє дані цієї форми.
Вихідний код форми:
<html> <form method="post" action="send.php">
Телефон<br/><input name="phone" value=""><br/><br/>
Сообщение<br/><textarea name="message" rows="4" cols="40"></textarea><br/><br/>
Оправитель<br/><input name="sender" value=""><br/><br/>
Отложить до<br/><input name="time" value=""> (дд.мм.гг чч:мм)<br/><br/>
<input type="checkbox" name="translit">Транслит <input type="checkbox" name="flash"> Flash SMS<br/><br/>
<input type="submit" name="send" value="Отправить"> </form> </html>
Файл send.php, який обробляє дані форми і використовує бібліотеку smsc_api.php:
<? if ($_POST["send"]) { include_once "smsc_api.php";
$r = send_sms($_POST["phone"], $_POST["message"], $_POST["translit"], $_POST["time"], 0, $_POST["flash"], $_POST["sender"]);
// $r = array(<id>, <количество sms>, <стоимость>, <баланс>) или array(<id>, -<код ошибки>)
if ($r[1] > 0) echo "Сообщение отправлено"; else echo "Произошла ошибка № ", -$r[1]; } ?>
Форма для підтвердження номера телефонуДля підтвердження номера мобільного телефону, наприклад, при активації нового облікового запису на сайті
можна використовувати наступний приклад HTML-форми і PHP-скрипта, що обробляє дані форми. Щоб уникнути відправки множинних запитів на формі
можна додатково розмістити антиспам перевірку (captcha).
Вихідний код форми:
<html> <form method="post" action="act.php">
<table> <tr><td>Номер телефона<td><input name="phone"> <tr><td><br/>
<tr><td>Код подтверждения<td><input name="code" size="6"> <input type="submit" name="sendsms" value="Выслать код"> <tr><td><br/>
<tr><td><input type="submit" name="ok" value="Подтвердить"> </table>
</form> </html>
Файл act.php, який обробляє дані форми і використовує бібліотеку smsc_api.php:
<? include_once "smsc_api.php";
if (isset($_POST["sendsms"])) { $r = send_sms($_POST["phone"], "Ваш код подтверждения: ".ok_code($_POST["phone"]));
if ($r[1] > 0) echo "Код подтверждения отправлен на номер ".$_POST["phone"]; }
if (isset($_POST["ok"])) { $oc = ok_code($_POST["phone"]);
if ($oc == $_POST["code"]) echo "Номер активирован"; else echo "Неверный код подтверждения"; }
function ok_code($s) { return hexdec(substr(md5($s."<секретная строка>"), 7, 5)); } ?>
Вихідний код форми:
<html> <form method="post" action="act.php" target="ifr">
<table> <tr><td>Номер телефона<td><input name="phone"> <tr><td><br/>
<tr><td>Код подтверждения<td><input name="code" size="6"> <input type="submit" name="sendsms" value="Выслать код"> <tr><td><br/>
<tr><td><input type="submit" name="ok" value="Подтвердить"><td colspan="2" id="_out"> </table>
</form> <iframe name="ifr" frameborder="0" height="0" width="0" style="visibility:hidden"></iframe> </html>
Файл act.php, який обробляє дані форми і використовує бібліотеку smsc_api.php:
<? echo "<script>parent.document.getElementById('_out').innerHTML = '";
include_once "smsc_api.php";
if (isset($_POST["sendsms"])) { $r = send_sms($_POST["phone"], ok_code($_POST["phone"]));
if ($r[1] > 0) echo "Код подтверждения отправлен на номер ".$_POST["phone"]; }
if (isset($_POST["ok"])) { $oc = ok_code($_POST["phone"]);
if ($oc == $_POST["code"]) echo "Номер активирован"; else echo "Неверный код подтверждения"; }
echo "'</script>";
function ok_code($s) { return hexdec(substr(md5($s."<секретная строка>"), 7, 5)); } ?>
Для уникнення множинних запитів коду підтвердження з однієї IP-адреси
і на один номер телефону рекомендуємо зробити відповідний контроль на
своєму сервері. Для обмеження кількості запитів на один номер телефону можливо
встановити відповідний ліміт у "Налаштуваннях користувача".
Також у форму підтвердження бажано додати картинку з кодом (captcha)
для захисту від програмних автоматичних спам-розсилок.
Форма для підтвердження адреси електронної поштиДля підтвердження адреси електронної пошти, наприклад, при активації нового облікового запису на сайті
можна використовувати наступний приклад HTML-форми і PHP-скрипта, що обробляє дані форми. Щоб уникнути відправки множинних запитів на формі
можна додатково розмістити антиспам перевірку (captcha).
Вихідний код форми:
<html> <form method="post" action="act.php">
<table> <tr><td>E-mail адрес<td><input name="phone"> <tr><td><br/>
<tr><td>Код подтверждения<td><input name="code" size="6"> <input type="submit" name="sendsms" value="Выслать код"> <tr><td><br/>
<tr><td><input type="submit" name="ok" value="Подтвердить"> </table>
</form> </html>
Файл act.php, який обробляє дані форми і використовує бібліотеку smsc_api.php:
<? include_once "smsc_api.php";
if (isset($_POST["sendsms"])) { $r = send_sms($_POST["phone"], "Ваш код подтверждения: ".ok_code($_POST["phone"]), 0, 0, 0, 8, "www@mysite.com", "subj=Confirmation");
if ($r[1] > 0) echo "Код подтверждения отправлен на e-mail адрес ".$_POST["phone"]; }
if (isset($_POST["ok"])) { $oc = ok_code($_POST["phone"]);
if ($oc == $_POST["code"]) echo "E-mail адрес активирован"; else echo "Неверный код подтверждения"; }
function ok_code($s) { return hexdec(substr(md5($s."<секретная строка>"), 7, 5)); } ?>
Вихідний код форми:
<html> <form method="post" action="act.php" target="ifr">
<table> <tr><td>E-mail адрес<td><input name="phone"> <tr><td><br/>
<tr><td>Код подтверждения<td><input name="code" size="6"> <input type="submit" name="sendsms" value="Выслать код"> <tr><td><br/>
<tr><td><input type="submit" name="ok" value="Подтвердить"><td colspan="2" id="_out"> </table>
</form> <iframe name="ifr" frameborder="0" height="0" width="0" style="visibility:hidden"></iframe> </html>
Файл act.php, який обробляє дані форми і використовує бібліотеку smsc_api.php:
<? echo "<script>parent.document.getElementById('_out').innerHTML = '";
include_once "smsc_api.php";
if (isset($_POST["sendsms"])) { $r = send_sms($_POST["phone"], ok_code($_POST["phone"]), 0, 0, 0, 8, "www@mysite.com", "subj=Confirmation");
if ($r[1] > 0) echo "Код подтверждения отправлен на e-mail адрес ".$_POST["phone"]; }
if (isset($_POST["ok"])) { $oc = ok_code($_POST["phone"]);
if ($oc == $_POST["code"]) echo "E-mail адрес активирован"; else echo "Неверный код подтверждения"; }
echo "'</script>";
function ok_code($s) { return hexdec(substr(md5($s."<секретная строка>"), 7, 5)); } ?>
Для уникнення множинних запитів коду підтвердження з однієї IP-адреси
і на одну адресу електронної пошти рекомендуємо зробити відповідний контроль на
своєму сервері. Також в форму підтвердження бажано додати картинку з кодом (captcha)
для захисту від програмних автоматичних спам-розсилок.
SOAP протокол
<? // Отправка сообщения
$client = new SoapClient ("http://smsc.ua/sys/soap.php?wsdl"); $ret = $client->send_sms(array("login"=>"alex", "psw"=>"123", "phones"=>"79999999999", "mes"=>"Hello world!", "id"=>"", "sender"=>"ivan", "time"=>0));
if ($ret->sendresult->error) echo "Ошибка №".$ret->sendresult->error; else { echo $ret->sendresult->id, "\n"; echo $ret->sendresult->balance, "\n"; echo $ret->sendresult->cost, "\n"; echo $ret->sendresult->cnt, "\n"; }
//Flash сообщение от отправителя "ivan", которое должно быть доставлено абоненту 01.01.2012 г. в 00:00:
$ret = $client->send_sms2(array("login"=>"alex", "psw"=>"123", "phones"=>"79999999999", "mes"=>"Hello world!", "id"=>"", "sender"=>"ivan", "time"=>"0101120000", "query"=>"flash=1"));
if ($ret->sendresult->error) echo "Ошибка №".$ret->sendresult->error; else { echo $ret->sendresult->id, "\n"; echo $ret->sendresult->balance, "\n"; echo $ret->sendresult->cost, "\n"; echo $ret->sendresult->cnt, "\n"; }
//Несколько сообщений разным абонентам:
$ret = $client->send_sms2(array("login"=>"alex", "psw"=>"123", "phones"=>"", "mes"=>"", "id"=>"", "sender"=>"", "time"=>0, "query"=>"list=79999999999:message1%0A79999999998:message2"));
if ($ret->sendresult->error) echo "Ошибка №".$ret->sendresult->error; else { echo $ret->sendresult->id, "\n"; echo $ret->sendresult->balance, "\n"; echo $ret->sendresult->cost, "\n"; echo $ret->sendresult->cnt, "\n"; }
// Получение стоимости
$ret = $client->get_sms_cost(array("login"=>"alex", "psw"=>"123", "phones"=>"79999999999", "mes"=>"Hello world!"));
if ($ret->costresult->error) echo "Ошибка №".$ret->costresult->error; else { echo $ret->sendresult->cost, "\n"; echo $ret->sendresult->cnt, "\n"; }
// Проверка статуса
$ret = $client->get_status(array("login"=>"alex", "psw"=>"123", "phone"=>"79999999999", "id"=>"999", "all"=>"0")); echo "Ошибка №".$ret->statusresult->error; else { echo $ret->statusresult->status, "\n"; echo $ret->statusresult->last_date, "\n"; echo $ret->statusresult->err, "\n"; }
// Расширенный статус
$ret = $client->get_status(array("login"=>"alex", "psw"=>"123", "phone"=>"79999999999", "id"=>"999", "all"=>"2")); echo "Ошибка №".$ret->statusresult->error; else { echo $ret->statusresult->status, "\n"; echo $ret->statusresult->last_date, "\n"; echo $ret->statusresult->err, "\n"; echo $ret->statusresult->last_timestamp, "\n"; echo $ret->statusresult->send_date, "\n"; echo $ret->statusresult->send_timestamp, "\n"; echo $ret->statusresult->phone, "\n"; echo $ret->statusresult->cost, "\n"; echo $ret->statusresult->sender_id, "\n"; echo $ret->statusresult->status_name, "\n"; echo $ret->statusresult->message, "\n"; echo $ret->statusresult->operator, "\n"; echo $ret->statusresult->region, "\n"; }
// Проверка баланса
$ret = $client->get_status(array("login"=>"alex", "psw"=>"123"));
if ($ret->balanceresult->balance) echo "Ошибка №".$ret->sendresult->error; else echo $ret->balanceresult->balance, "\n";
?>
|