Validacion de usuarios

  • 4 Respuestas
  • 1191 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Fher

  • *
  • Underc0der
  • Mensajes: 8
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Validacion de usuarios

  • en: Marzo 06, 2019, 01:51:52 am
Buenas noches

Alguien que me pueda guiar en la elaboracion de software utilizando validacion de terceros (email,
mensaje de texto y/o validación de dos pasos). es que tengo que realizar un proyecto pero no se como implementarlo, soy principiante en la programacion, por favor cualquier ayuda, gracias
« Última modificación: Marzo 06, 2019, 06:38:57 am por HATI »

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5709
  • Actividad:
    20%
  • Country: ar
  • Reputación 37
  • ANTRAX
  • Skype: underc0de.org
  • Twitter: @Underc0de
    • Ver Perfil
    • Underc0de
    • Email

Re:Validacion de usuarios

  • en: Marzo 06, 2019, 01:58:50 am
Hola,
Podrías dejar mayor detalle?
En que lenguaje lo estas haciendo?
Es una aplicación Web?

Saludos
ANTRAX


Desconectado Fher

  • *
  • Underc0der
  • Mensajes: 8
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Validacion de usuarios

  • en: Marzo 06, 2019, 01:59:23 am
Si es una aplicacion web en php, estoy utilizando codeigniter

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5709
  • Actividad:
    20%
  • Country: ar
  • Reputación 37
  • ANTRAX
  • Skype: underc0de.org
  • Twitter: @Underc0de
    • Ver Perfil
    • Underc0de
    • Email

Re:Validacion de usuarios

  • en: Marzo 06, 2019, 02:08:30 am
Casualmente, he estado leyendo bastante sobre frameworks en PHP, y todos dicen que es mejor Laravel.
Codeignither tiene muchas malas prácticas de programación. Si te puedes cambiar a Laravel, tu proyecto quizás vaya mejor.

Respecto a lo de la validación de mail en PHP, te dejo esto, espero que te sirva:

Base de datos:

La tabla de ejemplo de usuarios contiene cuatro campos: uid, email, password, activation y status.

Código: (mysql) [Seleccionar]
CREATE TABLE IF NOT EXISTS `users` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(300) NOT NULL UNIQUE,
`password` varchar(300) NOT NULL,
`activation` varchar(300) NOT NULL UNIQUE,
`status` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`uid`)
)

Codigo HTML

Contiene la maqueta de nuestra aplicación

Código: (html5) [Seleccionar]
<form action="" method="post">
<label>Email</label>
<input type="text" name="email" class="input" autocomplete="off"/>
<label>Password </label>
<input type="password" name="password" class="input" autocomplete="off"/><br/>
<input type="submit" class="button" value="Registration" />
<span class='msg'><?php echo $msg?></span>
</form>

db.php

Necesitamos un archivo de configuración para la conexión con la base de datos, y config.php será el encargado de ello. Mediante este archivo podrás modificar el nombre de usuario, la contraseña e incluso el nombre de la base de datos.

Código: (php) [Seleccionar]
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'username');
define('DB_PASSWORD', 'password');
define('DB_DATABASE', 'database');
$connection = @mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
$base_url='http://www.youwebsite.com/email_activation/';

index.php

Almacena los valores de registro del usuario dentro de la tabla de usuarios que hemos creado previamente. Generamos el código de activación utilizando el sistema de encriptación MD5()

Código: (php) [Seleccionar]
include 'db.php';
$msg='';
if(!empty($_POST['email']) && isset($_POST['email']) &&  !empty($_POST['password']) &&  isset($_POST['password']) )
{
// username and password sent from form
$email=mysqli_real_escape_string($connection,$_POST['email']);
$password=mysqli_real_escape_string($connection,$_POST['password']);
// regular expression for email check
$regex = '/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$/';

if(preg_match($regex, $email))
{
$password=md5($password); // encrypted password
$activation=md5($email.time()); // encrypted email+timestamp
$count=mysqli_query($connection,"SELECT uid FROM users WHERE email='$email'");
// email check
if(mysqli_num_rows($count) < 1)
{
mysqli_query($connection,"INSERT INTO users(email,password,activation) VALUES('$email','$password','$activation')");
// sending email
include 'smtp/Send_Mail.php';
$to=$email;
$subject="Email verification";
$body='Hi, <br/> <br/> We need to make sure you are human. Please verify your email and get started using your Website account. <br/> <br/> <a href="'.$base_url.'activation/'.$activation.'">'.$base_url.'activation/'.$activation.'</a>';

Send_Mail($to,$subject,$body);
$msg= "Registration successful, please activate email.";
}
else
{
$msg= 'The email is already taken, please try new.';
}

}
else
{
$msg = 'The email you have entered is invalid, please try again.';
}

}

Send_Mail.php

Función que enviará el correo de verificación. Acuérdate de modificar el host SMTP, el nombre de usuario y la contraseña. Si no cuentas con dichos datos, puedes utilizar los de Gmail.

Código: (php) [Seleccionar]
function Send_Mail($to,$subject,$body)
{
require 'class.phpmailer.php';
$from       = "[email protected]";
$mail       = new PHPMailer();
$mail->IsSMTP(true);            // use SMTP
$mail->IsHTML(true);
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Host       = "tls://smtp.yourwebsite.com"; // SMTP host
$mail->Port       =  465;                    // set the SMTP port
$mail->Username   = "SMTP_Username";  // SMTP  username
$mail->Password   = "SMTP_Password";  // SMTP password
$mail->SetFrom($from, 'From Name');
$mail->AddReplyTo($from,'From Name');
$mail->Subject    = $subject;
$mail->MsgHTML($body);
$address = $to;
$mail->AddAddress($address, $to);
$mail->Send();
}

activation.php

Basándonos en el código de activación que nos llega como parámetro en la url, activaremos al usuario modificando el campo status de la base de datos, de 0 a 1.

Código: (php) [Seleccionar]
<?php
include 'db.php';
$msg='';
if(!empty(
$_GET['code']) && isset($_GET['code']))
{
$code=mysqli_real_escape_string($connection,$_GET['code']);
$c=mysqli_query($connection,"SELECT uid FROM users WHERE activation='$code'");

if(
mysqli_num_rows($c) > 0)
{
$count=mysqli_query($connection,"SELECT uid FROM users WHERE activation='$code' and status='0'");

if(
mysqli_num_rows($count) == 1)
{
mysqli_query($connection,"UPDATE users SET status='1' WHERE activation='$code'");
$msg="Your account is activated"
}
else
{
$msg ="Your account is already active, no need to activate again";
}

}
else
{
$msg ="Wrong activation code.";
}

}
?>

//HTML Part
<?php echo $msg?>

.htaccess

Lo que haremos en este script será redirigir la URL:

http://website.com/activation.php?code=ACTIVATION_CODE

a:

http://website.com/activation/ACTIVATION_CODE

Código: (text) [Seleccionar]
RewriteEngine On

RewriteRule ^activation/([a-zA-Z0-9_-]+)$ activation.php?code=$1
RewriteRule ^activation/([a-zA-Z0-9_-]+)/$ activation.php?code=$1

Código CSS

Código: (css) [Seleccionar]
body
{
font-family: "Helvetica",Arial,sans-serif;
font-weight: 500;
color:#333;
}
label
{
width:100px;
display:block;
font-weight:bold;
color:#666666;
}
#main
{
margin:0 auto;
width:800px;
}
.input
{
padding:10px;
font-size:14px;
border:1px solid #999999;
width:200px;
margin-bottom:10px;
}
.button {
padding:10px;
background-color: #5fcf80 !important;
border-color: #3ac162 !important;
}
.msg
{
font-size:11px;
color:#666;
padding:10px;
}

Fuente: https://www.9lessons.info/2013/11/php-email-verification-script.html

Saludos y espero que te sirva.
ANTRAX


Desconectado animanegra

  • *
  • Moderator
  • Mensajes: 323
  • Actividad:
    10%
  • Country: 00
  • Reputación 12
    • Ver Perfil

Re:Validacion de usuarios

  • en: Marzo 06, 2019, 06:41:54 am
Para verificación en dos pasos simplemente tienes que hacer una aplicación móvil y una php en la que se calcula el hmac del timestamp en UTC dividida entre un tiempo X (por ejemplo 30 segundos) y una clave aleatoria que se ha guardado en limpio en el servidor y se ha dado al cliente móvil. el resultado se reduce al numero de dígitos que se desee, por ejemplo 6 y se pide a la hora de haber metido el password correctamente. El código en PHP es bastante sencillo:

Código: [Seleccionar]
substr(hash_hmac('sha256',floor(time()/30) , $pass),0,$size)."\n";

Donde en $pass se almacena la password compartida y en $size se determina el tamaño de la clave OTP que desea introducir el usuario.

Lo siento, no contesto dudas por MP, si tienes dudas las planteas en el foro.