Для подтверждения номера мобильного телефона, например, при активации новой учетной записи на сайте
можно использовать следующий пример 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)
для защиты от программных автоматических спам-рассылок.
|