Open Menu dzosoft
Close Menu dzosoft

   TODO SOBRE INFORMÁTICA Y TECNOLOGÍA


                             







 
 
 

Cómo iniciar sesión con autenticación OTP en PHP

 

 
Cómo iniciar sesión con autenticación OTP en PHP
 
Inicie sesión con una OTP Contraseña de un solo uso. El código es un método muy seguro para autenticar a un usuario.
Este método consiste en generar dinámicamente una contraseña de un solo uso llamada código OTP.
que se pueden enviar tanto al correo electrónico del usuario como a su teléfono móvil.
 
Cómo iniciar sesión con autenticación OTP en PHP
 
Cuando el usuario ingrese el código OTP, la aplicación autentificará al usuario usando este código.
En este tutorial, veremos un ejemplo para autenticar el inicio de sesión del usuario a través de un código OTP usando el correo electrónico

En este ejemplo, cuando el usuario registrado ingresa el correo electrónico para iniciar sesión, se envía un código OTP a la dirección de correo electrónico.
Al usar este código OTP, el usuario será autenticado. Este código no será válido una vez que el usuario lo use.

Puede optar por sustituir esta lógica de generación de código aleatorio utilizando su mecanismo preferido.
Este código se envía al correo electrónico del usuario mediante PHPmailer, consulte Cómo enviar fácilmente un correo electrónico con PHPMailer en PHP 

 
Cómo iniciar sesión con autenticación OTP en PHP
 

El siguiente código muestra el formulario de inicio de sesión para que el usuario ingrese su dirección de correo electrónico.
Al ingresar el correo electrónico, muestra una entrada para ingresar el código OTP enviado a su dirección de correo electrónico.
Después de enviar el código OTP, PHP validará el código y mostrará el resultado de la autenticación al usuario.

Primero comenzamos creando nuestras tablas.
Estas son las consultas para crear las tablas 'users' y 'otp'

 

SQL

 
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL,
  `email` varchar(255) NOT NULL
)

CREATE TABLE IF NOT EXISTS `otp` ( `id` int(11) NOT NULL, `otp` varchar(10) NOT NULL, `created_date` datetime NOT NULL )


 

Código PHP (con CSS y HTML)

 
<?php
require('phpmailer/class.phpmailer.php');
require('phpmailer/class.smtp.php');

if(!empty($_POST["email"])) { $result = mysqli_query($conn,"select * from users where email='" . $_POST["email"] . "'"); $count = mysqli_num_rows($result); if($count>0) { // generate OTP $otp = rand(50000,99999); // Send OTP $mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPDebug = 0; $mail->SMTPAuth = TRUE; $mail->SMTPSecure = 'tls'; // tls or ssl $mail->Port = "smtp_port"; $mail->Username = "smtp_username"; $mail->Password = "smtp_password"; $mail->Host = "smtp_host"; $mail->Mailer = "smtp"; $mail->SetFrom($email_from, $name_from); $mail->AddAddress($_POST["email"]); $mail->Subject = " Your OTP to Login: it will be expired in an hour"; $mail->MsgHTML("One time OTP:<br/><br/>" . $otp); $mail->IsHTML(true); $status = $mail->Send();
if($status == 1) { $created_date=date("Y-m-d H:i:s"); $result = mysqli_query($conn,"inser into otp(otp,created_date) values ('" . $otp . "', '" . date("Y-m-d H:i:s"). "')"); $current_id = mysqli_insert_id($conn); if(!empty($current_id)) { $ok = 1; } } } else { $err_message = "Email not exists!"; } } } if(!empty($_POST["otp"])) { $result = mysqli_query($conn,"select * from otp where otp='" . $_POST["otp"] . "' and and now() <= date_add(create_at, interval 1 hour)"); $count = mysqli_num_rows($result); if(!empty($count)) { $success =1; $err_message = "expired OTP!"; } } ?> <html> <head> <title>User Login</title> <style> body{ font-family: "Times New Roman", Times, serif; }
.tblheader { font-size: 20px; } .tblrow { padding:20px; }

.container { max-width: 300px; max-height: 300px; position: relative; margin: auto; top:200px; background: #ffb5b5; }
#login { border: #95bff6 2px solid; background: #CCCCFF; border-radius: 4px; max-width: 300px; padding:20px 30px 30px; text-align:center; }
#err_message { color: #000; background: #FF5555; border: #FF0000 1px solid; width: 100%; max-width: 300px; padding: 10px 30px; border-radius: 4px; margin-bottom: 5px; }
#otp{ border: #4A96D8 1px solid; padding: 10px 20px; border-radius:4px; }
#email{ border: #4A96D8 1px solid; padding: 10px 20px; border-radius:4px; } #submit { padding: 10px 20px; background: #000066; border: #d1e8ff 1px solid; color: #FFF; border-radius:4px; cursor:pointer; } </style> </head> <body> <?php $success=1; if(!empty($err_message)) { ?> <div id="err_message"><?php echo $err_message; ?></div> <?php } ?>
<div class="container"> <form name="frmUser" method="post" action=""> <div id="login"> <?php if(!empty($success == 1)) { ?> <div class="tblheader">Enter the received OTP</div> <p style="color:#AC0600;">Check your email for the OTP</p>
<div class="tblrow"> <input type="text" id="otp" placeholder="One Time Password" required> </div> <div class="tblheader"><input type="submit" id="submit" value="Submit" ></div> <?php } else if ($success == 2) { ?> <p style="color:#AC0600;">Welcome, You have successfully logged in!</p> <?php } else { ?> <div class="tblheader">Enter Email to get the OTP code</div> <div class="tblrow"><input type="text" id="email" placeholder="Email" required></div> <div class="tblheader"><input type="submit" id="submit" value="Submit"></div> <?php } ?> </div> </form> </div> </body> </html>


Codificación feliz




También te puede interesar


Los 5 mejores tutoriales para aprender php en 2023

Cómo crear una aplicación de chat con PHP y HTML en solo unos pocos pasos

Cómo instalar XAMPP (con Apache, MySQL y phpMyAdmin) en Windows

Cómo enviar fácilmente un correo electrónico con PHPMailer en PHP

Cómo crear fácilmente gráficos usando PHP

Cómo usar ChatGPT con PHP


Leave comment
          

Guardar apodo y correo electrónico en este navegador para la próxima vez.



Cargando...