Formulaire d'authentification

Résolu/Fermé
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - 25 nov. 2013 à 10:36
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - 10 déc. 2013 à 23:15
Bonjour,

Après beaucoup de recherche pour un formulaire d'authentification pour pouvoir l'adapter à mon site, je voudrais vous demander si vous pouvez m'aider.
Un simple formulaire j'aurai pas de soucis mais ce que je souhaiterai est un peu particulier.
J'ai une table de Membre avec plusieurs champs tout est renseigné dans la BDD

id
Rid (relation avec la table utilisateur)
login_membre
password_membre
login_admin
password_admin
admin_1 (zéro ou 1) case à cocher
admin_2 (zéro ou 1) case à cocher
admin_3 (zéro ou 1) case à cocher
admin_4 (zéro ou 1) case à cocher

J'ai un formulaire d'authentification sur la page d'accueil, comment faudrait-il faire pour que chaque membre et chaque admin soit reconnu avec leurs login et password respectifs.

Je vous dit un grand merci pour ceux qui pourrons m'aider pour mon problème.
Cordialement

15 réponses

Utilisateur anonyme
25 nov. 2013 à 13:45
Hello, à mon avis pour résoudre ton problème il faudra passer par plusieurs "post" (Question/Réponse).

dans un premier temps pourrais-tu me confirmer que les champs cité ci-dessus font bien parti d'une seul et unique table.

ensuite, si j'ai bien compris :
- si le membre est un utilisateur normal il aura son login/password dans login_membre / password_membre et les champs login_admin/password_admin seront vide (et l'inverse si il est administrateur)

avant dernière question :
- que signifie le admin_1/admin_2/admin_3/admin_4 : c'est le degré de l'administateur ? exemple : auteur/modérateur/admin/superadmin ?

pour finir et pour voir si j'ai bien tout compris ce que tu voulais :
- le but c'est faire un code qui vérifie que le login / password rentré par l'internaute soient correctes et de vérifier si il est user normal ou admin ?

J'attends tes réponses ;)

A+

Seezer
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
25 nov. 2013 à 21:48
Bonjour

Déjà merci pour ta réponse.
Oui il y a une seule et unique table

Les champs admin_1 et admin_2 et admin_3 et admin_4 c'est diffents les different degré d'administrateur.
Merci beaucoup si tu peux m'aider
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
25 nov. 2013 à 21:51
si tu veux je peux t'envoyer ma table SQL tu comprendra mieux avec ci-joint?
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
25 nov. 2013 à 22:03
Bonsoir,

Quel est l'utilité de mettre un champs login_admin et pass_admin ?

Si un membre à le même pseudo qu'un admin ça se passe comment ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
25 nov. 2013 à 22:06
si un membre se connecte avec ses identifiant membre il sera redirigé vers sa page perso
sinon vers ça page de gestion le concernant
0
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 274
25 nov. 2013 à 22:08
ce que je voulais dire c'est :

pourquoi ne pas juste mettre un champ bool admin

et des pages accessibles uniquement si cette condition est rempli ?
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
25 nov. 2013 à 22:07
en fait les couples login et password doivent être unique
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
25 nov. 2013 à 22:30
parce que j'ai 4 membres qui on la gestion de page différente
0
Utilisateur anonyme
26 nov. 2013 à 08:56
Ce que tu pourrais faire et ce qui se fait couramment c'est la chose suivante :

logins
id
Rid (relation avec la table utilisateur)
login
password
status

Ensuite soit status est un varchar et il comporte directement l'info : user/admin/superadmin/desactive etc..

ou soit tu créer une deuxième table :

status devient Sid (relation avec la table status)

status
id
nom (Administrateur)
short (admin)

et comme ça pour chaque logins, tu auras l'id du status le concernant. ce qui permettra de savoir si il est admin/superadmin/utilisateur normal/désactivé

*****************

Disons que c'est une méthode qui me parait un peu plus logique (mais bon chacun à ça méthode je te l'accorde ;) )

à toi de voir dans quel sens tu voudrais partir. dans tous les cas on reste à dispo pour t'aider à développer ton script d'authentification.

A+

Seezer
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
26 nov. 2013 à 19:48
Bonjour
Merci je vais essayer ça et te tiens au courant
A+
Merci
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
28 nov. 2013 à 09:58
Bonjour,
Excuse moi je suis obligé de revenir vers toi.
Pour être sincère cela est bien compliqué pour moi, je voudrais savoir si tu peux jeter un coup d'oeil sur mes fichiers que je t'envoie si tu as un peu de temps pour moi.
En fait cette table qui a 2 login et 2 Password me perturbe.
Ci-joint
1 fichier de ma table SQL
1 fichier PHP de mon formulaire de connexion avec un semblant de vérif

https://www.cjoint.com/c/CKCj5UJAU0h

Je te remercie beaucoup
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
1 déc. 2013 à 08:02
Bonjour

Je souhaite toujours créer un formulaire d'identification avec login et Password.
Si quelqu'un pourrais éventuellement me donner un peu d'aide.
Tout au moins me définir par quoi faut-il commencer.
Par exemple,
1) tester si le visiteur à soumis le formulaire
2) on vérifie si le login et Password ne sont pas vide ou null
3) ensuite je ne sais pas, si vous pouvez m'aider à construire ce formulaire avec toutes les questions de sécurité que cela impose.
Je vous serai très reconnaissant.
Merci beaucoup
Cordialement
0
Xavierdu34 Messages postés 216 Date d'inscription lundi 2 décembre 2013 Statut Membre Dernière intervention 10 octobre 2016 21
2 déc. 2013 à 02:07
Je n'ai pas vraiment la réponse toute faite, si tu as peu d'utilisateurs qui doivent s'authentifier, tu peux les mettre dans un fichier plutôt qu'en base, enfin c'est du détails, voici une petite solution que je te propose, elle est faites à base d'un fichier mais peu parfaitement s'adapter à un système de bdd.

contenu de ta page php :
<?php
if(isset($_POST['deconnect'])) $_SESSION = array(); // pour la déconnection
include('user.php'); // include le fichier des utilisateurs
if(isset($_SESSION['user'])) $_POST['username'] = $_SESSION['user']; // si déjà auth, on set le user en post
if(isset($_SESSION['pass'])) $_POST['password'] = $_SESSION['pass']; // si déjà auth, on set le pass en post
if(isset($_POST['username']) && isset($_POST['password']))  { // si les champs user et pass sont envoyé.
	$username = $_POST['username']; $password = $_POST['password']; // on set les variables $username et $password
	if(array_key_exists($username, $users)) { // si le username existe dans le tableau $users
		if(preg_match('/'.$password.'/',$users[$username][0])) { // et qu'il y a une correspondance avec le pass
			
			$_SESSION['pass'] = $password; // on set en session le user
			$_SESSION['user'] = $username; // on set en session le mot de passe
			// Ici le contenu de la page logué
			// $users[$username][1] contient le niveau de l'utilisateur (user, admin, superadmin ...)
			
		} else { echo 'pas de correspondance user/motdepasse'; } // si le mot de passe ne corresponds pas 
	} else {  echo 'username does not exist'; } // si le username n'existe pas 
} else { // Si pas d'authentification ou erreur d'auth, on afficher le formulaire d'auth 
?>
<form method="post">
<input type="text" placeholder="username" id="username" name="username" />
<br /><br />
<input type="password" placeholder="password" id="password" name="password" />
<br /><br />
<input type="submit" value="se connecter" />
</form>
<?php } ?>


contenu du fichier user.php
<?php $users = array(
'administrator' => array('motdepasse', 'admin'),
'pierrepaul' => array('motdepasse', 'user');
 ?>


Ce n'est pas une solution extrêmement sécurisé, mais tout a fait viable pour faire simple. Pas de gestion de cookie, la personne s'auth pour sa session uniquement.
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
2 déc. 2013 à 19:50
Bonjour,

je reviens maintenant vous demander encore un peu de votre temps pour mon fichu formulaire.

En fait j'ai ma BDD avec tous les champs renseignés.

J'ai une table "t_identifiant" et les champs ci-dessous

id_Identifiant
Rid_Adherent qui correspond à la relation avec la table t_gestion_adherent
ContactSortie
ContactSondage
ContactFormation
LoginAdmin
MotDePasseAdmin
LoginMembre
MotDePasseMembre

Alors en fait un Adherent à son login et mot de passe, mais il peut également si il est administrateur avoir un login et mot de passe admin.

Les 3 admin c'est les 3 champs contact, c'est simplement des case à cocher donc 0 ou 1

Avec le même formulaire d'identification.
J'espère que mes explication pourrons vous permettre de pouvoir me donner un coup de main pour un formulaire inhabituel.
Je vous joint le formulaire pour modifier.
Merci beaucoup de votre aide


<?php
//Si l'utilisateur est déja connécté, redirection autre part
if(isset($_SESSION['LoginAdmin'])) header('Location: ./index.php');

//Si le formulaire est envoyé
if (!empty($_POST))
{
	//Initialisation des erreurs a vide => aucune erreur a ce niveau
	$erreurs = '';

	//Vérification du formulaire
	if(!isset($_POST['LoginAdmin']) OR empty($_POST['LoginAdmin'])) 
		$erreurs .= '<span class="erreur">Login incorrect.</span>';
	if(!isset($_POST['MotDePasseAdmin']) OR empty($_POST['MotDePasseAdmin'])) 
		$erreurs .= '<span class="erreur">Mot de passe incorrect.</span>';


	//Si aucune erreur, on poursuis
	if(empty($erreurs))
	{
		//Néttoyage des variables
		$login = trim($_POST['LoginAdmin']);
		$pass = trim($_POST['MotDePasseAdmin']);

		//Recherche de l'utilisateur
		//Lorsque la requete prends des parametres en entré, il faut utiliser les requetes préparés pour éviter les injections sql
		$resultats = $bdd->prepare('SELECT * FROM t_identifiant WHERE LoginAdmin = :log');
		$resultats->execute(array(':log' => $login));
		$donnees = $resultats->fetch(PDO::FETCH_ASSOC);

		//Si la requete n'a pas retourné un résultat, alors le login est incorrecte
		if(empty($donnees))
		{
			$erreurs = '<span class="erreur">Login incorrect...<br/> Merci de recommencer.</span>';
		}

		/* Si les mots de passe ne corréspondent pas, erreur
		md5 n'est juste qu'un exemple de fonction pour hasher(crypter) les mots de passes
		il existe de meilleurs fonctions, a toi de chercher, exemple sha1
		Les mots de passes dans la BD doivent etre hashé(crypté), c.a.d que meme toi tu ne peux pas connaitre 
		les mots de passes de tes utilisateurs */
		elseif($donnees['MotDePasseAdmin'] != md5($pass))
		{
			$erreurs = '<span class="erreur">Mauvais mot de passe...<br/> Merci de recommencer.</span>';
		}

		//Si tout est OK
		else
		{
			//on cré des variables accessibles depuis toutes les pages
			$_SESSION['LoginAdmin'] = $login; 
			//$_SESSION['MotDePasseAdmin'] = $donnees['MotDePasseAdmin']; // Aucune raison d'enregistrer le mot de passe

			//Faire une rediréction
			header('Location: ./index.php');

		}
	}

	//Afficher les erreurs si il en existe
	echo $erreurs;
}
?>

<form name="form_connexion" action="#" method="post" enctype="multipart/form-data">
    <fieldset>
        <legend>Se connecter</legend><br/>
        
        <center>
        	<b>
        		<p style="margin: 5px; padding: 5px;">Réservé aux membres de<br/> LA CLIQUE DE CRUET</p>
        	</b>
        </center>

		<br/>

        <label for="Login">Login :</label>	 
        <center><input type="text" id="Login" name="Login" class="Login" tabindex="1"/></center> 
		
		<br/>	
        
        <label for="password">Mot de passe :</label> 
        <center><input type="password" id="password" name="password" class="password" tabindex="2"/></center> 
		<center><input src="image/form_connexion.png" width="70%" type="image" class="form_connexion" border="0" Value="" align="middle"/></center>  
    </fieldset>
</form>
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
8 déc. 2013 à 19:59
Bonjour
Je renvoie un post pour mon formulaire d'identification. En fait je n'arrive pas à me connecter déjà en tant qu'Admin.
Pouvez vous me dire ce que vous en pensez si vous avez un peu de temps.
Je vous remercie

<?php
//Si l'utilisateur est déja connécté, redirection autre part
if(isset($_SESSION['login_admin'])) header('Location: ./index.php');

//Si le formulaire est envoyé
if (!empty($_POST))
{
	//Initialisation des erreurs a vide => aucune erreur a ce niveau
	$erreurs = '';

	//Vérification du formulaire
	if(!isset($_POST['login_admin']) OR empty($_POST['login_admin'])) 
		$erreurs .= '<span class="erreur">Login incorrect.</span>';
	if(!isset($_POST['password_admin']) OR empty($_POST['password_admin'])) 
		$erreurs .= '<span class="erreur">Mot de passe incorrect.</span>';


	//Si aucune erreur, on poursuis
	if(empty($erreurs))
	{
		//Néttoyage des variables
		$login = trim($_POST['login_admin']);
		$pass = trim($_POST['password_admin']);

		//Recherche de l'utilisateur
		//Lorsque la requete prends des parametres en entré, il faut utiliser les requetes préparés pour éviter les injections sql
		$resultats = $bdd->prepare('SELECT * FROM t_identifiant WHERE login_admin = :log');
		$resultats->execute(array(':log' => $login));
		$donnees = $resultats->fetch(PDO::FETCH_ASSOC);

		//Si la requete n'a pas retourné un résultat, alors le login est incorrecte
		if(empty($donnees))
		{
			$erreurs = '<span class="erreur">Login incorrect...<br/> Merci de recommencer.</span>';
		}

		/* Si les mots de passe ne corréspondent pas, erreur
		md5 n'est juste qu'un exemple de fonction pour hasher(crypter) les mots de passes
		il existe de meilleurs fonctions, a toi de chercher, exemple sha1
		Les mots de passes dans la BD doivent etre hashé(crypté), c.a.d que meme toi tu ne peux pas connaitre 
		les mots de passes de tes utilisateurs */
		elseif($donnees['password_admin'] != $pass)
		{
			$erreurs = '<span class="erreur">Mauvais mot de passe...<br/> Merci de recommencer.</span>';
		}

		//Si tout est OK
		else
		{
			//on cré des variables accessibles depuis toutes les pages
			$_SESSION['login_admin'] = $login; 
			//$_SESSION['MotDePasseAdmin'] = $donnees['MotDePasseAdmin']; // Aucune raison d'enregistrer le mot de passe

			//Faire une rediréction
			header('Location: ./index.php');

		}
	}

	//Afficher les erreurs si il en existe
	echo $erreurs;
}
?>

<form name="form_connexion" action="#" method="post" enctype="multipart/form-data">
    <fieldset>
        <legend>Se connecter</legend><br/>
        
        <center>
        	<b>
        		<p style="margin: 5px; padding: 5px;">Réservé aux membres de<br/> LA CLIQUE DE CRUET</p>
        	</b>
        </center>

		<br/>

        <label for="login_admin">Login :</label>	 
        <center><input type="text" id="login_admin" name="login_admin" class="login_admin" tabindex="1"/></center> 
		
		<br/>	
        
        <label for="password_admin">Mot de passe :</label> 
        <center><input type="password" id="password_admin" name="password_admin" class="password_admin" tabindex="2"/></center> 
		<center><input src="image/form_connexion.png" width="70%" type="image" class="form_connexion" border="0" Value="" align="middle"/></center>  
    </fieldset>
</form>
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
10 déc. 2013 à 23:15
Bonjour,

Je reviens vers vous pour un petit coup de main s'il vous plait.

Mon formulaire même avec les bon identifiant il ne fonctionne pas je n'arrive pas à trouver l'erreur.
Pouvez vous y jeter un coup d'oeil ?
Je vous remercie beaucoup
<?php
session_start();
include('connexion.php');
    
    /* il faut que toutes les variables du formulaire existent*/
    if(!isset($_POST['pseudo']) OR empty($_POST['pseudo'])) {
        
        /*il faut que tous les champs soient renseignes*/
        if ($_POST['pseudo'] != "" && $_POST['pass'] != "") {
            
            /*on crypte le mot de passe pour faire le test*/
            $passhache = sha1($_POST['pass']);
            
            /* on verifie qu'un membre a bien ce pseudo et ce mot de passe*/
            $req = $bdd->prepare('SELECT * FROM membre WHERE pseudo = :pseudo AND pass= :pass ');
            $req->execute(array(
                'pseudo' => $_POST['pseudo'],
                'pass' => $passhache
            ));
            $resultat = $req->fetch();
            
            /*s'il n'y a pas de resultat, on renvoie a la page de connexion*/
            if (!$resultat) {
                header('Location: login.php');
            } else {
                
                /* on cree les variables de session du membre qui lui serviront pendant sa session*/
                $_SESSION['id']     = $resultat['id'];
                $_SESSION['pseudo'] = $pseudo;
                $_SESSION['mail']   = $resultat['email'];
                
                /*on renvoie sur la page d'accueil*/
                header('Location: index.php');
            }
        } else {
            echo "Il faut remplir tous les champs";
        }
    } else {
        echo 'Votre pseudo ou mot de passe est incorrect';
    }
?>
0