Formulaire de connexion qui tri admin ou user

Fermé
yoann.gadon - 24 août 2012 à 00:15
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 25 août 2012 à 09:44
Bonjour,

je suis en train de faire mon formulaire de connexion et je bloque sur un truc qui me parait simple :/

en fait dans ma base de données les user et admin sont entrés dans la meme table mais un 'x' dans la colonne admin apparait en plus pour les admin.

j'ai donc mis dans mon formulaire en html en caché un x qui est entrée automatiquement dans le champ nommé admin mais je n'arrive pas a concevoir le code qui permet de verifier la présence d'admin dans la base de donnée pour afficher un message différant en cas d'utilisateur classique ou admin

voila le bout de code que j'ai fait mais qui ne fonctionne pas car il ne fait pas la difference et me met a chaque fois 'utilisateur client'


<?php

include('phpconnect.php');

if(isset($_POST) && !empty($_POST['user']) && !empty($_POST['pass']) && !empty($_POST['admin'])) {
extract($_POST);
// on recupère le password de la table qui correspond au login du visiteur
$sql = "select pass from utilisateurs where user='".$user."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data = mysql_fetch_assoc($req);


if($data['pass'] != $pass) {
echo '<p>Mauvais login / password. Merci de recommencer</p>';
include('login.htm'); // On inclut le formulaire d'identification
exit;
}


elseif($data['admin'] == 'x' )
{
echo 'admin cool';
}


else {
session_start();
$_SESSION['login'] = $user;

echo '<center>Utilisateur client</a></center>';
}

}
else {
echo '<p>Vous avez oublié de remplir un champ.</p>';
include('login.htm'); // On inclut le formulaire d'identification
exit;
}





?>


si vous pouvez m'aider un peu car la je suis bloqué et je n'arrive pas a avancer

merci bcp







A voir également:

3 réponses

WebLooser Messages postés 63 Date d'inscription mercredi 30 mai 2012 Statut Membre Dernière intervention 29 avril 2013 7
24 août 2012 à 10:34
Salut,
Pourrait-on voir le formulaire en html s'il te plaît ?
Car je ne comprends pas vraiment à quoi correspondent les $_POST['admin'] et $_POST['user']...
Il y a 2 formulaires de connexions ? Un pour les admins, un pour les membres ?
0
non il y a uniquement un formulaire et justement je voudrait que les admin et les user se connecte via le même mais que le php les envoi sur une page différente

voici le formulaire de connexion


<form action="login.php" method='post'>
<table align="center" border="0">
<tr>



<td>Utilisateur</td>
<td><input type="text" name="user" maxlength="250"></td>
</tr>
<tr>
<td>Mot de passe</td>
<td><input type="password"name="pass" maxlength="250"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Connexion"></td>
</tr>
<tr>
<input type="hidden" name="admin" value="x">
</tr>
</table>
</form>
<BR>
<BR>
0
gardiendelanuit Messages postés 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
24 août 2012 à 14:08
Tu ne veux pas plutôt mettre tout simplement le rang du client dans $_SESSION dans les 2 cas et le traiter par la suite en fonction de celle-ci?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
25 août 2012 à 09:44
<?php
//tu mets tout y compris le formulaire dans ta page login.php
//la partie php au début
if(isset($_POST['connexion'])){
	if(!empty($_POST['user']) && !empty($_POST['pass']){
		//tu fais d'abord connexion a ta BDD
		//PUIS on recuperes les valeurs postées		
		$user=mysql_real_escapre_string($_POST['user']); //securité
		$pass=mysql_real_escapre_string($_POST['lpass']); //securité
		
		//puis ta requette pour voir si login et pass sont bien dans la BDD
		$sql = "select* from utilisateurs where user='".$user."' AND pass ='".$pass."'";
		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); .
		if(mysql_num_rows($req) == 1)){
			//on a bien trouvé le couple login mdp
			//on va lire la colonne qui contien eventuellement le X
			$data=mysql_fetch_assoc($req);
			session_start(); //demarage session ATTENTION il ne doit y avaoir aucun code HTML avant cette ligne !!!!
			if($data['admin'] =='X'){
				//c'est un admin on initialise la variable de session type_utilisateur 
				$_SESSION['type_utilisateur']='admin';
				//tu peux mettre plusieurs variables de session
				$_SESSION['pseudo']=$user;
				//puis on redirige vers la  page correspondant à admin
				header('Location:page_acceuil_admin.php');
			}else{
				//c'est un lambda
				$_SESSION['type_utilisateur']='client';
				$_SESSION['pseudo']=$user;
				//puis on redirige vers la  page utilisateur lambda
				header('Location:page_acceuil.php');
			}
		}
	}else{
		echo '<p>Vous avez oublié de remplir un champ.</p>'; 
	
	}
}



?>
<form action="login.php" method="post">
<table align="center" border="0">
<tr>
<td>Utilisateur</td>
<td><input type="text" name="user" value="" maxlength="250" /></td>
</tr>
<tr>
<td>Mot de passe</td>
<td><input type="password"name="pass" value="" maxlength="250" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="connexion" value="Connexion" /></td>
</tr>
<!-- NON 
<tr>
<input type="hidden" name="admin" value="x">
</tr>
-->
</table>
</form> 

et au debut de toutes les pages php de ton site:

<?php

session_start();
if(!isset($_SESSION['type_utilisateur']) || $_SESSION['type_utilisateur'] ==""){
	//pas de session ouverte donc on redirige vers le formulire de cx
	header('Location:login.php');
	exit;
}else{
	//une session est bien ouverte donc
	//ci dessous tout le code de ta page 
?>
<!DOCTYPE  etc....

HTML...

<?php
//tu peux recuperer variable de session
echo "Bonjour ".$_SESSION['pseudo'];
if($_SESSION['type_utilisateur']=='X'){
	//tu fais eventuellement  autre chose

}
?>
//encore du HTML ...
<?php
} //fin du else sessioin
?>
0