begin process at 2012 05 27 21:42:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > GESTION DES MEMBRES (LOGIN/LOGOUT) PHP/MYSQL

GESTION DES MEMBRES (LOGIN/LOGOUT) PHP/MYSQL


 Information sur la source

Note :
7,67 / 10 - par 3 personnes
7,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :25/07/2003 Date de mise à jour :25/07/2003 12:18:06 Vu :34 731

Auteur : Cabby

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

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

  • <?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\">&gt;&gt; My CP</a>\n<br>\n";
  • if(session_is_registered('admin') && $admin == 1) {
  • echo "<a href=\"admin.php\">&gt;&gt; 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;
  • }
  • ?>
<?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\">&gt;&gt; My CP</a>\n<br>\n";
	if(session_is_registered('admin') && $admin == 1) {
		echo "<a href=\"admin.php\">&gt;&gt; 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.


 Sources du même auteur

RÉCUPÉRER LE NOM DE LA PAGE COURANTE SANS SON EXTENSION

 Sources de la même categorie

Source avec une capture MODULE JOOMLA 1.5 NOW LISTENING par Alcantornet
Source avec Zip Source avec une capture UPLOAD CENTER par basssem81
Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK

Commentaires et avis

Commentaire de matrey le 26/07/2003 10:40:35

"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 !!!!!

Commentaire de kimengumi le 01/08/2003 17:05:21

Euh, oui, effectivement !

Commentaire de Cabby le 01/08/2003 17:48:51

c'est pourtant bien suffisant pour un site perso

Commentaire de matrey le 03/08/2003 21:08:32

c'est vrai qu'il ne faut pas être parano non plus...
mais un peu de sécurité ne fait pas de mal :D

Commentaire de EmanWebDev le 08/09/2008 16:37:39

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

Commentaire de begueradj le 12/01/2010 22:53:47

je déteste ton code

Commentaire de nossoctoruss le 31/05/2010 15:33:55

heu...c'est quand meme un peu exageré la haut!si t'est le leader d'un site de 20000 personnes abituelle ok...mais sinon...

Commentaire de matrey le 02/06/2010 07:09:25

@nossoctoruss : OK tu debutes en prog et tes sites n'ont pas beaucoup d'utilisateurs, et donc pour toi - pour le moment - la securite n'est pas forcement un facteur important. Il n'en reste pas moins que ce script est pas du tout securise et donc il ne devrait pas etre utilise tel quel.

J'avoue que mon commentaire de 2003 n'etait pas totalement constructif donc voila quelques problemes que je peux voir dans ce script :
- il n'etait pas bon en 2003, alors 7 ans plus tard...
- mots de passe stockes en clair dans la BDD
- risque potentiel d'injection SQL du fait que les saisies utilisateurs sont integrees directement dans la requete SQL
- le mot de passe est stocke dans la session, et on ne sait pas trop ou ca peut atterrir (sur un espace du serveur accessible a tous ? ou meme dans un cookie ?)

Je te conseille la lecture du rapport "OWASP Top 10 Web Application Security Risks for 2010" pour plus de details sur les principales failles de securite touchant les applications web - et les mesures a prendre pour les eviter : http://owasptop10.googlecode.com/files/OWASP%20Top%2010%20-%202010.pdf

Commentaire de begueradj le 02/06/2010 11:05:55

tu me subjugues Mr. Matrev : tu suis ce code depuis 2003 ?

Commentaire de begueradj le 02/06/2010 11:07:19

et merci pour le lien

Commentaire de nossoctoruss le 02/06/2010 13:04:34

oui,mais enfin pour l'instant,je ne connai que la fonction echo et le include mdr,(je ne sais pas comment je pourrais apprendre le php,car l'apprendre tout seul est difficile^^)donc...mais je ne dis pas le contraire,je dis juste que c'est un peu vexan pour celui qui poste une source,et qu'on vien lui dire "je déteste ton code"

Commentaire de begueradj le 03/06/2010 11:10:03

Non Mr.Nossoctoruss :)
je lui demande pardon si mon commentaire insignue l'acte de vexer ....
et je ne déteste pas son code: on ne peut pas détester un code, je pense :)

Commentaire de nossoctoruss le 03/06/2010 12:16:56

^^,je parlai en general,je ne peu pas savoir si ca la vexé,et je trouve que tu a raison sur ce point:
"on ne peut pas détester un code, je pense :)"
++

Commentaire de samaddog le 04/11/2011 12:18:22

salut
est ce que je peux avoir le code?
voilà mon email.samaddog@gmail.com
je suis un étudiant en 2eme année genie informatique .

Commentaire de ajlani123 le 25/02/2012 20:56:19

comment cera activé s code???

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,260 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales