sql >> Database >  >> RDS >> Mysql

Ongedefinieerde variabele fout in mijn PHP-script

Er zijn veel problemen met uw code, de belangrijkste reden dat u een foutmelding krijgt, is omdat $usertype en $userstatus zijn niet vooraf gedefinieerd en niet gevalideerd.
Maar naar mijn mening is het geen hoofdprobleem met uw code.

Er zijn enkele vragen die ik u zou willen stellen:

  • Waarom twee lussen maken als je een enkele rij moet ophalen?
  • Waarom de database twee keer opvragen als je het antwoord al weet?
  • Ben je ontsnapt aan $username en $password voor slechte tekens met behulp van mysql_real_escape_string methode?

hier is een voorbeeld hoe deze code eruit zou moeten zien:

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

UPDATE
Zoals voorgesteld door nikc.org , verwijderd 3e niveau if nesten en vervangen door ternaire vergelijking



  1. MySQL Workbench - Is Schema hetzelfde als Database?

  2. Een eenvoudige mysql-select optimaliseren op een grote tafel (75M+ rijen)

  3. Hoe u uw MySQL- en MariaDB-back-ups kunt versleutelen

  4. Hoe kan ik het mysql-wachtwoord instellen in het mysqld_safe draait-scenario?