Validacion de usuarios

Iniciado por Fher, Marzo 06, 2019, 01:51:52 AM

Tema anterior - Siguiente tema

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

Marzo 06, 2019, 01:51:52 AM Ultima modificación: Marzo 06, 2019, 06:38:57 AM por HATI
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

Hola,
Podrías dejar mayor detalle?
En que lenguaje lo estas haciendo?
Es una aplicación Web?

Saludos
ANTRAX


Si es una aplicacion web en php, estoy utilizando codeigniter

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
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
<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
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
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
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
<?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:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

a:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Código: text
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
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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos y espero que te sirva.
ANTRAX


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: php

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.