Gestion des membres (login/logout) php/mysql

Soyez le premier à donner votre avis sur cette source.

Snippet vu 42 910 fois - Téléchargée 30 fois

Contenu du snippet

Ce code est tout simplement l'interface de gestion de membres que j'ai mis sur mon site.
Il permet de se logger de n'importe quel endroit du site puisque je l'appelle à partir de mon header.
Ce script utilise les sessions et MySQL (pour votre tableau de membres).

Il est à ma sauce mais compréhensible tel quel donc je n'ai pas changé mon code.
:P

Source / Exemple :


<?php
//auth.php

####################################################################################################################

//Cette permiere fonction vérifie le login et le mot de passe que vous avez entré.
//Evidemment il vous faudra la changer vous même car elle dépend de l'organisation de votre tableau
//de membres dans votre base de données.
//En outre, j'utilise la fonction db_connect qui est située dans mon common_db.inc. (ce common_db est
//appelé via le header donc il n'est pas rappelé ici).
//vous remarquerez que vous devez avoir ouvert une session pour que le script marche.
//Enfin dernière chose, j'ai choisi (car j'en avais besoin) de distinguer les admins des membres lambda.
//C'est pourquoi j'enregistre la variable de session $admin.

function verification($lg, $pw, $sd) {
global $nombd_defaut;
global $PHP_SELF;
global $PHPSESSID;
global $member_pass, $member_id, $login, $admin;
$error_login = false;
if($sd != '') {
	$id_lien = db_connect($nomdb = '');
	if(!$id_lien) error_message(sql_error());
	$recherche = "SELECT User_ID,login, password, admin FROM utilisateurs WHERE login='$lg' AND password='$pw'";
	$resultat = mysql_query($recherche);
	if(!$resultat) error_message(sql_error());
	$nb_found = mysql_fetch_row($resultat);
	$nom_total_resultats = $nb_found[0];
	if($nom_total_resultats != 0) {
		$donnees_rech = mysql_fetch_array(mysql_query($recherche));
		mysql_close($id_lien);
		$member_id = $donnees_rech['User_ID'];
		$login = $donnees_rech['login'];
		$member_pass = $donnees_rech['password'];
		session_register('member_id');
		session_register('login');
		session_register('member_pass');
		if($donnees_rech['admin'] == 1) {
			$admin = 1;			
			session_register('admin');
			}

		}
		else {
			$error_login = true;
		}
	}
	else {
		$error_login = true;
	}

if($error_login) {
	echo "Cannot authenticate.\n";
	echo "<br>\n";
	login();
	}
	else {
		details();
	}
}

####################################################################################################################

//cette fonction affiche un formulaire de login si le membre n'est pas authentifié, et
//appelle la fonction details() dans le cas contraire.

function login() {
global $PHPSESSID;
global $nom, $prenom;
global $PHP_SELF;

if(session_is_registered('member_id')) {
	details();
	}
	else {
echo "<form name =\"auth\" action=\"$PHP_SELF?action=verification\" method=\"post\">\n";
echo "login\n<br>\n";
echo "<input type=\"text\" name=\"form_login\" size=\"12\" maxlength=\"15\" class=\"border\">\n";
echo "<br>\n";
echo "password\n<br>\n";
echo "<input type=\"password\" name=\"form_password\" size=\"12\" maxlength=\"15\" class=\"border\">\n";
echo "<br>\n";
echo "<br>\n";
echo "<input type=\"hidden\" name=\"send\" value=\"1\" />\n";
echo "<input type=\"submit\" value=\"login\" class=\"border\">\n";
echo "</form>\n";
	}
}

####################################################################################################################

//details() affiche ce que vous voulez afficher une fois que votre membre s'est loggé.
//Cette fonction dépend donc à 100% de vous seul :P
//On affiche un lien vers le panneau d'administration du membre (mypanel.php)
//Puis on n'affiche un lien vers admin.php que si le membre est loggé en tant qu'admin.

function details() {
global $PHP_SELF;
global $PHPSESSID;
global $login, $admin;

if(session_is_registered('member_id')) {
	echo "<img src=\"images/icons/minimembre.gif\" align=\"absmiddle\"> <b>$login</b>\n<br>\n<br>\n";
	echo "<a href=\"mypanel.php\">>> My CP</a>\n<br>\n";
	if(session_is_registered('admin') && $admin == 1) {
		echo "<a href=\"admin.php\">>> Admin CP</a>\n<br>\n<br>\n";
		}
		else {
		echo "<br>\n";
		}
	echo "[ <a href=\"$PHP_SELF?action=logout\">Log out</a> ] \n";
	}
	else {
		login();
	}

?>
</BODY>
</HTML>
<?
}

#############################################################################################################################

//dernière fonction qui détruit la session en cours pour délogger le membre

function logout() {
global $PHPSESSID;
global $PHP_SELF;

session_unset();
session_destroy();
login();
}

##############################################################################################################################

//Et enfin un petit switch qui s'occupe de tout agencer :P

switch($action) {
	case "login" :
		login();
	break;
	case "logout" :
		logout();
	break;
	case "verification" :
		verification($form_login, $form_password, $send);
	break;
	case "details" :
		details();
	break;
	default:
		login();
	break;
}
?>

Conclusion :


voila voila
ne faites pas attention à la sécurité parceque ca n'a pas été ma préoccupation première pour faire ce script. Libre à vous d'adapter ça à vos besoins.

A voir également

Ajouter un commentaire

Commentaires

matrey
Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004
-
"ne faites pas attention à la sécurité"...mouais...ok c'était pas ta préoccupation première... mais pourtant pour un espace membre c'est la première des priorités !!!!!
cs_kimengumi
Messages postés
19
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
7 juillet 2006
-
Euh, oui, effectivement !
cs_Cabby
Messages postés
1
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
1 août 2003
-
c'est pourtant bien suffisant pour un site perso
matrey
Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004
-
c'est vrai qu'il ne faut pas être parano non plus...
mais un peu de sécurité ne fait pas de mal :D
EmanWebDev
Messages postés
1
Date d'inscription
jeudi 20 mars 2008
Statut
Membre
Dernière intervention
8 septembre 2008
-
ok, soit, c'est bien vrai ça,
alors, euh.... c'est comment qu'on implémente un peu de sécurité qui ne fait pas de mal :D

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.