Creo que sería más conveniente que la consulta te devuelva los datos si el email y el password son correctos.
En vez de:
Código:
mysql_query("SELECT email,password,id_shopper FROM shoppers WHERE email =\"".mysql_real_escape_string($email)."\"") or die(mysql_error());
Sería:
Código:
mysql_query("SELECT email,password,id_shopper FROM shoppers WHERE email='mysql_real_escape_string($email)' AND password ='mysql_real_escape_string($password)' LIMIT 1") or die(mysql_error());
Entonces, si el email y password introducidos, no concuerda con algún registro de la BD, puedes redireccionar a otro lado, en cambio, si encuentra un registro don dichos datos, recuperas los campos que desees y muestras mensajes o redireccionas al usuario.
Esta una una idea muy básica, pero te puede servir a mejorar el login de tu aplicación, OJO no he probado si funciona:
Código PHP:
<?php
function limpiar_variables($var){
// REMPLAZO CARACTERES PARA EVITAR INYECCION
$pattern = array("'",'\\','<','>',"\"",";","$","|","{","}","+","#");
$var = str_replace($pattern, '', $var);
// ESCAPO CON MYSQL Y LA VARIABLE DEBERIA ESTAR MUY LIMPIA
return mysql_escape_string($var);
}
$email = limpiar_variables($_POST['email']);
$password = limpiar_variables($_POST['password']);
if(strlen($email) < 3 or strlen($password) < 3){
// EL EMAIL O PASSWORD ES MUY CORTO, MENOR A 3 CARACTERES
// MUESTRO MENSAJE O REDIRECCIONO
header('Location: error.php');
exit();
}
// HAGO LA CONSULTA
$sql = mysql_query("SELECT email,password,id_shopper FROM shoppers WHERE email='$email' AND password ='$password' LIMIT 1") or die(mysql_error());
// COMPRUEBO SI SE ENCONTRO UN REGISTRO CON DICHOS DATOS
if(mysql_num_rows($sql) == 1){
// SI ENCONTRO UN REGISTRO, LOS DATOS SON VALIDOS
// AQUI HACES LO QUE DEBERIA HACER SI SON CORRECTOS
}
else{
// NO SE ENCONTRO UN REGISTRO DON DICHOS DATOS
// REDIRECCIONO O MUESTRO MENSAJE
exit();
}
?>
Fíjate que la función "limpiar_variables" elimina caracteres potencialmente peligrosos y escapa la variable, osea, que debería estar limpia y evitar un poco más la inyección de código.
Saludos.