Mysql
 sql >> Database >  >> RDS >> Mysql

Errore variabile non definito nel mio script PHP

Ci sono molti problemi con il tuo codice, il motivo principale per cui ricevi un errore è perché $usertype e $userstatus non sono predefiniti e non convalidati.
Ma secondo me non è un problema principale con il tuo codice.

Ci sono alcune domande che vorrei farti:

  • Perché creare due loop se devi recuperare una singola riga?
  • Perché interrogare il database due volte se conosci già la risposta?
  • Stai evadendo da $username e $password per caratteri non validi utilizzando mysql_real_escape_string metodo?

ecco un esempio di come dovrebbe apparire questo codice:

$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";
}

AGGIORNAMENTO
Come suggerito da nikc.org , rimosso if di 3° livello annidamento e sostituito con confronto ternario