Gestion des membres (login/logout) php/mysql

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

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.