Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Undefinierter Variablenfehler in meinem PHP-Skript

Es gibt viele Probleme mit Ihrem Code, der Hauptgrund dafür, dass Sie einen Fehler erhalten, ist $usertype und $userstatus sind nicht vordefiniert und nicht validiert.
Aber meiner Meinung nach ist es kein Hauptproblem mit Ihrem Code.

Es gibt einige Fragen, die ich Ihnen stellen möchte:

  • Warum zwei Schleifen erstellen, wenn Sie eine einzelne Zeile abrufen müssen?
  • Warum die Datenbank zweimal abfragen, wenn Sie die Antwort bereits kennen?
  • Escapen Sie $username und $password für schlechte Zeichen mit mysql_real_escape_string Methode?

Hier ist ein Beispiel, wie dieser Code aussehen sollte:

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

AKTUALISIEREN
Wie von nikc.org vorgeschlagen , if der 3. Ebene entfernt verschachtelt und durch ternären Vergleich ersetzt