Система проверки по SMS с использованием Twilio

Пытаюсь создать систему проверки смс просто ради обучения. Таким образом, файловая структура будет следующей

Index.php Form.php Sendcode.php Verify.php

Здесь я пытаюсь понять, как я могу заставить пользователей, вошедших в систему, перенаправляться на form.php, и если они подтвердят, что их номер будет перенаправлен обратно на index.php, в противном случае будет предложено проверить их номер обратно в форме. php с ошибкой. Таким образом, если статус в БД установлен как 1, пользователь может получить доступ к index.php, в противном случае статус останется установленным на 0 и требуется для проверки номера в form.php

Может кто-то помочь мне с этим? Возможно, напишите образец кода index.php
Вот содержимое файла
Form.php

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
   $(document).ready(function(){
      $("#phone").submit(function() 
      {
          var phone_no = $('#phone_no').val();

          if(phone_no != '')
          {

              $.post("sendcode.php", { phone_no: phone_no },
                    function(data) 
                    {
                       $(".result").html(data);
                    }, 
                    "html"
              );

          }

          return false;
      });
   });
</script>

<div class = "result"></div>
<p>Enter your phone number below, and we will send you a verification code to that phone number.</p>
<form id = "phone" method  = "POST" action = "">
<label for = "phone">Phone number</label>
<input name = "phone" type = "text" id = "phone_no" />
<input name = "submit" type = "submit" value = "Send Verification Code" />
</form>

<p>Enter Verification Code received to the phone number specified above in the form below.</p>

<form id = "verification" method  = "POST" action = "verify.php">
<label for = "code">Verification Code</label>
<input name = "code" type = "text" id = "code" />
<input name = "submit" type = "submit" value = "Verify" />
</form>

Sendcode.php

<?php
// configuration 
/*** mysql hostname ***/
$hostname = 'localhost';
// database name
$dbname = '';
/*** mysql username ***/
$username = 'username';
/*** mysql password ***/
$password = 'password';
// enter SID here
$twilioSid = '';
// enter twilio token here
$twilioToken = '';
if(isset($_POST['phone_no']))
{
    try 
    {
        $verifyCode = rand(1000, 9999);

        $phone = $_POST['phone_no'];

        $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);

        /*** add verification code and phone number to db **/
        $sth = "INSERT INTO user (phone, code) VALUES(:phone, :code)";
        $command = $dbh->prepare($sth);
        $command->bindParam(':phone', $phone, PDO::PARAM_STR);
        $command->bindParam(':code', $verifyCode, PDO::PARAM_INT);
        $command->execute();

        // twilio library
        require ('Services/Twilio.php');

        $client = new Services_Twilio($twilioSid, $twilioToken);

        // send sms with verifcation code 
        $response = $client->account->sms_messages->create('555-555-555', $phone, 'Verification code ' . $verifyCode);

        echo '<p>A verification code was sent to your phone number. Please enter it below.</p>';

        /*** close the database connection ***/
        $dbh = null;
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
}
?>  

Verify.php

<?php
if(isset($_POST['code']))
{
    $verifyCode = $_POST['code'];

    /*** mysql hostname ***/
    $hostname = 'localhost';

    /*** database name ***/
    $dbname = '';
    /*** mysql username ***/
    $username = 'username';
    /*** mysql password ***/
    $password = 'password';

    try {

        $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);

        // USER_ID is the login ID of the user
        $sql = "SELECT code FROM user WHERE id = {$user_id}";
        $sth = $dbh->query($sql);

        $code = $sth->fetchColumn();

        if($code == $verifyCode)
        {
            echo "Your account has been validated.";

            // verify user in db
            $todo = "UPDATE user SET status = 1 WHERE user_id = {$user_id}";
            $dbh->execute($todo);

        }
        else
        {
            echo "Your account has not been validated.";
        }

        $dbh = null;
    }
    catch(PDOException $e)
    {
        echo $e->getMessage();
    }
}
?>

person Voxd    schedule 26.03.2015    source источник


Ответы (1)


Здесь Рики из Twilio.

Мы составили руководство, показывающее, как создавать это приложение с использованием Authy. Хотя это может не быть вашей точной настройкой, может помочь то, как мы структурировали пример приложения.

Для приложения, больше похожего на то, что вы собираете, вы также можете взглянуть на это сообщение в блоге, в котором подробно описывается, как создать простую систему проверки телефона с помощью Twilio, PHP, MySQL и jQuery.

Надеюсь, эти ресурсы помогут!

person rickyrobinett    schedule 14.09.2015