Il y a beaucoup de problèmes avec votre code, la principale raison pour laquelle vous recevez une erreur est que $usertype
et $userstatus
ne sont ni prédéfinis ni validés.
Mais à mon avis, ce n'est pas un problème majeur avec votre code.
Il y a quelques questions que j'aimerais vous poser :
- Pourquoi créer deux boucles si vous devez récupérer une seule ligne ?
- Pourquoi interroger la base de données deux fois si vous connaissez déjà la réponse ?
- Échappez-vous à
$username
et$password
pour les mauvais caractères en utilisantmysql_real_escape_string
méthode ?
voici un exemple à quoi ce code devrait ressembler :
$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";
}
MISE À JOUR
Comme suggéré par nikc.org
, suppression du 3e niveau if
imbrication et remplacé par une comparaison ternaire