¿Esta bien este código de inicio de sesión?

Hola amigo tengo una base de datos con 3 campos a la cual el formulario de ingreso anda muy bien, pero ahora quiero iniciar sesión y redireccionar y me tira errores y ningún código que baje me funco . Este es uno de los más prolijos, que me esta faltando o errando.
<?php
$dbhost='mysql16.000webhost.com';
$dbusername='a4331051_testing';
$dbuserpass='mispass';
$dbname='usuario456';
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('Cannot select database');
if ($_POST['email']) {
$email=$_POST['email'];
$password=$_POST['password'];
if ($password==NULL) {
echo "<center>La password no fue enviada<center>";
}else{
$query = mysql_query("SELECT email,password FROM usuarios WHERE email = '$email'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['password'] == $password) {
echo "<center>Login incorrecto<center>";
} else {
if  ($data['password']== $password and $data['email'] == $email){
         header("Location: descargas.php");
}
}
}
}
?>
Respuesta
1
Supongo que los datos de conexión a mysql no serán exactamente esos, nunca pongas datos reales de conexión en foros.
En la tabla, ¿el campo email es clave primaria?, si no es así, puedes recibir más de un valor en la consulta y no gestionas ese posible caso.
En cualquier caso, verifica siempre en un SELECT el número de filas obtenidas, primero para ver si es lógico y tiene sentido, en este caso debería ser sólo 1, y también por que si es 0 y luego entras en un bucle que procese los resultados no tiene sentido entrar.
La consulta ya que quieres ver si es igual el email y contraseña, lo puedes hacer en ella y no en la parte php:
$resquery = mysql_query("SELECT `email`,`password` FROM `usuarios` WHERE `email` = '$email' AND `password`='$password'") or die(mysql_error());
if ( mysql_num_rows( $resquery ) === 1 ) {
    header("Location: descargas.php");
} else {
   echo '<span style="text-align:center;">Login incorrecto</span>";
}
No obstante, en el propio descargas.php deberás comprobar el usuario, sino la seguridad es 0. Forma sencilla es crear una cookie de sesión y si es correcto el login, guardas la cookie creada en una tabla que deberás verificar en descargas.php.
Pero eso ya es más trabajo ya que deberás crear una página de logout y/o código que limpie la tabla de sesiones caducadas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas