Pregunta:
Fecha: 16-06-2018 16:47:16
(En Español)
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[No resuelta]
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>';
}
}
?>
Votos: 0 -
Respuestas: 3 -
Vistas: 15
Compartir en: Google
Facebook
Twitter
LinkedIn
Link
Respuestas:
-
Fecha: 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. Votos: 2 - Link respuesta -
-
Fecha: 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 :) Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
