Question:
Date: 16-06-2018 16:47:16
(In Spanish)
mi pregunta es la siguiente:
tengo un form de ingreso los cuales paso por metodo POST a otro archivo.php los recibo y los mando a imprimir con echo. todo bien mientras consulto y todo a la BD, pero cuando quiero comparar el usuario y la clave solo me compara el usuario y no la clave. les dejo el codigo a ver que me recomiendan.
Orientar sobre un SELECT desde PHP[Unresolved]
hola comunidad muy buenas noches desde venezuela...mi pregunta es la siguiente:
tengo un form de ingreso los cuales paso por metodo POST a otro archivo.php los recibo y los mando a imprimir con echo. todo bien mientras consulto y todo a la BD, pero cuando quiero comparar el usuario y la clave solo me compara el usuario y no la clave. les dejo el codigo a ver que me recomiendan.
<?php $host = ""; $user = ""; $pass = ""; $db = ""; $port = ; $connection = mysqli_connect($host, $user, $pass, $db, $port)or die(mysql_error()); $usuario = $_POST["usuario"];// aqui recibo los datos del form $clave = md5($_POST["clave"]); $query = "SELECT * FROM usuarios"; $result = mysqli_query($connection, $query); while ($row = mysqli_fetch_assoc($result)) { if($row['usuario']=== $usuario && $row['clave']=== $clave )//solo este if es el q compara { echo '<SCRIPT LANGUAGE="javascript">location.href = "inicio.php";</SCRIPT>'; }elseif ($row['usuario']!= $usuario && $row['clave']!= $clave ) { echo '<SCRIPT LANGUAGE="javascript">location.href = "index.php";</SCRIPT>'; } } ?>Votes: 0 - Answers: 3 - Views: 15 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 16-06-2018 21:40:23 Estas haciendo unas cuantas cositas mal:
1.- No estas haciendo un where en tu query para filtrar la data
2.- No estas sanitizando la data que llega por post
3.- No deberias de utilizar MD5 para tus claves
4.- No es necesario un while sy solo buscas validar la data de un solo usuario, de alli el where en la query
Podrias crear las claves con la siguiente funcion:
function claveusuario($X){ $salt = substr(base64_encode(openssl_random_pseudo_bytes('30')), 0, 22); $salt = strtr($salt, array('+' => '.')); $hash = crypt($X, '$2y$10$' . $salt); $claveB = $hash; return $claveB; }//END
y la consulta seria algo mas o menos asi:
$db = new mysqli($host, $user, $pass, $db); $a = $db->query("SELECT * FROM usuarios WHERE usuario = '$user'"); $t = mysqli_num_rows($a); if($t==1){ $row = $a->fetch_object(); if(password_verify($clave, $row->clave)){ //ejecuto todo lo que valla a hacer si la clave coincide } }
Con el where en tu query validando el usuario no es necesario colocarlo en una condición, solo basta con validar ahora la clave, pues si llegas a ese punto es porque el usuario existe.
Y las redirecciones ejecutalas directamente desde php:
header('location:inicio.php');
No es necesario colocar allí javascript si no piensas mostrar ningún error en esa pantalla. Votes: 2 - Link answer -
-
Date: 20-06-2018 06:50:52 Carlos Quintero, me hiciste recordar algo que leí alguna vez y nunca probé XD
Que se recomendaba hacer un die() o return; luego de un header('location:inicio.php'); ya que eso en si hace un redirect y un usuario podría modificar su navegador para no seguirlo y continuar con la ejecución de la pagina (en una situación donde no se permita continuar usando el header location).
Alguien tiene una opinión al respecto?
Saludos :) Votes: 0 - Link answer
To actively participate in the community first must authenticate, enter the system.Sign In