Connexion avec deux types d'utilisateur

omlaly - 20 févr. 2013 à 12:31
 omlaly - 21 févr. 2013 à 12:58
Bonjour

J'essaye de faire ma page de connexion PHP en essayant de gérer deux droits :
-administrateur (moi)
-membres

Je n'ai pas d'erreur mais quand je me connecte avec un compte administrateur ou un compte membre, il me met toujours :
Vous êtes authentifié. Merci, vous allez être redirigé dans 5 secondes cher membre.


Voici le code PHP :

// Sélectionnement de l'utilisateur désiré dans la base de données

$query_connexion_generale=mysql_query("SELECT user_pseudo FROM user WHERE user_pseudo = '$identifiant_connexion' AND user_mdp = '$password_connexion_sha1'") or die('Erreur lors de la connexion générale'.mysql_error()); // Envoie une requête à un serveur MySQL
$query_connexion_administrateur=mysql_query("SELECT user_pseudo FROM user WHERE user_pseudo = '$identifiant_connexion' AND user_mdp = '$password_connexion_sha1' AND `user_acces` = '1'") or die('Erreur lors de la connexion de l\'administrateur'.mysql_error()); // Envoie une requête à un serveur MySQL

// Test si l'utilisateur est inscrit - réponse positive
if(mysql_num_rows($query_connexion_generale) == 1) { // mysql_num_rows retourne le nombre de lignes d'un résultat MySQL

if(mysql_num_rows($query_connexion_administrateur) == 1) { // mysql_num_rows retourne le nombre de lignes d'un résultat MySQL

$_SESSION['statut_connexion'] == Administrateurs;
echo "<center>Vous êtes authentifié. Merci, vous allez être redirigé dans 5 secondes cher admin.</center>";
echo '<meta http-equiv="refresh" content="5;URL=adresse.php">'; // Pour effectuer la redirection après 5 secondes - marche avec Google Chrome et Opera pas avec Mozilla Firefox
}
else
echo "<center>Vous êtes authentifié. Merci, vous allez être redirigé dans 5 secondes cher membre.</center>";
echo '<meta http-equiv="refresh" content="5;URL=/adresse.php">'; // Pour effectuer la redirection après 5 secondes - marche avec Google Chrome et Opera pas avec Mozilla Firefox

$_SESSION['statut_connexion'] == Membres;
}


J'explique mon raisonnement : je commence dans le cas général (
$query_connexion_generale
) pour savoir si le pseudo de l'utilisateur est dans la base de données. Après, j'essaie de lui dire (c'est là que je n'arrive pas) : si le pseudo saisi est égal au pseudo de l'administrateur dans la base de données (
$query_connexion_administrateur
)
alors tu rentres dans le if qui est imbriqué (
if(mysql_num_rows($query_connexion_administrateur) == 1)
) sinon tu ne fais pas le if imbriqué. Par contre si le pseudo saisi ne rentre pas dans les deux tests if alors ça veux dire qu'il n'est pas dans la base de données et donc pas inscrit, tu ne fait pas les deux tests et tu passes directement dans

else
   echo "<center>Vous n'êtes pas inscrit. Merci de vous inscrire.</center>";}

. Ce test est tout en bas.

Pour information, voici le CREATE TABLE de la table "user" :
CREATE TABLE IF NOT EXISTS `user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_comptesactives` decimal(10,0) NOT NULL,
  `user_pseudo` varchar(255) CHARACTER SET utf8 NOT NULL,
  `user_mdp` varchar(255) CHARACTER SET utf8 NOT NULL,
  `user_inscription` datetime NOT NULL,
  `user_naissance` date NOT NULL,
  `user_email` varchar(255) CHARACTER SET utf8 NOT NULL,
  `user_localisation` varchar(255) CHARACTER SET utf8 NOT NULL,
  `user_profession` varchar(255) CHARACTER SET utf8 NOT NULL,
  `user_avatars` varchar(255) CHARACTER SET utf8 NOT NULL,
  `user_derniere_visite` datetime NOT NULL,
  `user_bannis` int(11) NOT NULL,
  `user_acces` int(1) unsigned NOT NULL DEFAULT '2',
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `user_pseudo` (`user_pseudo`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=88 ;


Est-ce que mon raisonnement est logique ? Qu'est-ce qu'il ne va pas ?

En attendant vos réponses, je continue mes recherches...
Cordialement

2 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
21 févr. 2013 à 12:34
Dans le code retranscrit tu as des erreurs de crochet.

Quant au raisonnement je suis pas sûr de l'avoir compris, en tout cas ce qu'il faut faire c'est requêter suivant usr/mdp et changer l'affichage suivant la valeur de user_acces (qui semble être ton discriminant pour l'admin).

J'ai expliqué simplement, tu n'auras pas d'autres explications ni de code.

Bon dev.

PS : stp arrête de poster dans SQL, c'est clairement avec le PHP que t'as des problèmes à chaque fois.
0
Salut jopop,

Sur cette adresse : http://www.phpcs.com/forum/sujet-CONNEXION-AVEC-DEUX-TYPES-UTILISATEUR_1627424.aspx , tu trouveras une discussion plus complète sur ce sujet.

Cordialement
0
Rejoignez-nous