sql >> Base de Datos >  >> RDS >> Mysql

Error de variable indefinida en mi script PHP

Hay muchos problemas con su código, la razón principal por la que recibe un error es porque $usertype y $userstatus no están predefinidos ni validados.
Pero en mi opinión, no es un problema principal con su código.

Hay algunas preguntas que me gustaría hacerle:

  • ¿Por qué crear dos bucles si necesita obtener una sola fila?
  • ¿Por qué consultar la base de datos dos veces si ya sabe la respuesta?
  • ¿Estás escapando de $username? y $password para caracteres malos usando mysql_real_escape_string método?

aquí hay un ejemplo de cómo debería verse este código:

$query1 = "SELECT user_type,user_staus FROM `user_info` WHERE name='{$username}' AND password='{$password}' LIMIT 1";

$fetched = mysql_query($query1);

//check if record exists otherwise you would receive another notice that can 
//break redirect functionality
if (mysql_num_rows($fetched))
{
    $record = mysql_fetch_assoc($fetched);

    // make sure that value is integer
    if ((int)$record["user_staus"])
    {
        exit("Please login after some time");
    }
    else
    {
        $url = (bool)$record["user_type"] ? 'admin_form.php' : 'user_form.php';

        header("Location: {$url}");

        exit(0);
    }

}
else
{
    echo "please register to login";
}

ACTUALIZAR
Según lo sugerido por nikc.org , eliminado el tercer nivel if anidamiento y reemplazo con comparación ternaria