Пример подтверждения номера телефона

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

Исходный код формы: <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">&nbsp;
<
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."<секретная строка>"), 75));
}
?>


Для избежания множественных запросов кода подтверждения с одного IP-адреса и на один номер телефона рекомендуем сделать соответствующий контроль на своем сервере. Для ограничения количества запросов на один номер телефона возможно установить соответствующий лимит в "Настройках пользователя". Также в форму подтверждения желательно добавить картинку с кодом (captcha) для защиты от программных автоматических спам-рассылок.





Повышаются тарифы на зарубежные направления
12.09.2024
С 15 сентября изменяются цены на зарубежные направления для Зона 1, Зона 2 и Зона 3. Новые тарифы указаны на сайте на странице .