Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erro de variável indefinida no meu script PHP


Há muitos problemas com seu código, o principal motivo pelo qual você recebe um erro é porque $usertype e $userstatus não são predefinidos e não validados.
Mas na minha opinião não é um problema principal com o seu código.

Há algumas perguntas que eu gostaria de fazer a você:
  • Por que criar dois loops se você precisa buscar uma única linha?
  • Por que consultar o banco de dados duas vezes se você já sabe a resposta?
  • Você está escapando de $username e $password para caracteres ruins usando mysql_real_escape_string método?

aqui está um exemplo de como esse código deve ficar:
$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";
}

ATUALIZAÇÃO
Conforme sugerido por nikc.org , removido de 3º nível if aninhamento e substituído por comparação ternária