begin process at 2012 05 27 19:11:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaires

 > LOGIN SHA1 + CRÉATION UTILISATEUR

LOGIN SHA1 + CRÉATION UTILISATEUR


 Information sur la source

Note :
2 / 10 - par 1 personne
2,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaires Classé sous :connexion, login, sha1, utilisateur, membre Niveau :Débutant Date de création :31/01/2011 Date de mise à jour :12/04/2012 13:46:46 Vu / téléchargé :5 121 / 651

Auteur : aventurier19

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

 Description

Cliquez pour voir la capture en taille normale
J'ai repris un script que je trouvais plutôt pas mal mais qui avait un inconvénient majeur ; il utilisait des fonctions obsolètes du genre session_register ou encore des isset() manquants.

Il permet de créer des utilisateur avec un statut d'admin ou d'utilisateur.
Il utilise un base de donnée à installer manuellement.

Un fichier explicatif se trouve dans le zip.

J'en ai profité pour que les mots de passe soient cryptés en sha1.

Je vous mets la page d'accueil en vue (script php et screenshot)

A bientôt.

Source

  • <?php
  • require_once('connexion.php');
  • /*
  • -----------------------------------
  • ---- SCRIPT D'AUTHENTIFICATION ----
  • DBProtect V1.5
  • Contact : david@borrat.net
  • Mise &agrave; jour php5
  • +
  • cryptage sha1 par aventurier19
  • -----------------------------------
  • */
  • session_start(); // début de session
  • if (isset($_POST['login'])){ // execution apres envoi du formulaire
  • $login = mysql_real_escape_string($_POST['login']); // mise en variable du nom d'utilisateur
  • $pass = sha1($_POST['pass']); // mise en variable du mot de passe crypté
  • // requete sur la table administrateurs (on récupère les infos de la personne)
  • mysql_select_db($database_dbprotect, $dbprotect);
  • $verif_query = sprintf("SELECT * FROM $tablename_dbprotect WHERE login='$login' AND pass='$pass'"); // requête sur la base administrateurs
  • $verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
  • $row_verif = mysql_fetch_assoc($verif);
  • $utilisateur = mysql_num_rows($verif);
  • if ($utilisateur) { // On test s'il y a un utilisateur correspondant
  • $_SESSION['authentification'] = 1; // enregistrement de la session
  • // déclaration des variables de session
  • $_SESSION['privilege'] = $row_verif['privilege']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
  • $_SESSION['nom'] = $row_verif['nom']; // Son nom
  • $_SESSION['prenom'] = $row_verif['prenom']; // Son Prénom
  • $_SESSION['login'] = $row_verif['login']; // Son Login
  • $_SESSION['pass'] = $row_verif['pass']; // Son mot de passe (à éviter)
  • header("Location: accueil.php"); // redirection si OK
  • exit;
  • }
  • else {
  • header("Location: index.php?erreur=login"); // redirection si utilisateur non reconnu
  • exit;
  • }
  • }
  • // GESTION DE LA Déconnexion
  • if (isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un "contexte" de déconnexion
  • header("Location: index.php?erreur=delog");
  • exit;
  • }
  • ?>
  • <html>
  • <head>
  • <title>Authentification - DBProtect 1.5</title>
  • <style type="text/css">
  • <!--
  • .Style2 {color: #0000FF}
  • .Style5 {color: #FF0000}
  • .Style6 {font-family: Verdana, Arial, Helvetica, sans-serif}
  • .Style7 {font-size: 12px}
  • .Style10 {
  • font-size: 14px;
  • font-weight: bold;
  • }
  • -->
  • </style>
  • </head>
  • <body>
  • <form action="" method="post" name="connect" class="Style6">
  • <p align="center" class="Style7"><strong>
  • <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "login")) { // Affiche l'erreur
  • echo '<span class="Style5">Echec d\'authentification !!! &gt; login ou mot de passe incorrect</span>';
  • }
  • if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog")) { // Affiche l'erreur
  • echo '<span class="Style2">D&eacute;connexion r&eacute;ussie... A bient&ocirc;t '.$_SESSION['prenom'].' !</span>';
  • session_unset();
  • }
  • if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru")) { // Affiche l'erreur
  • echo '<span class="Style5">Echec d\'authentification !!! &gt; Aucune session n\'est ouverte</span>
  • <span class="Style5">ou vous n\'avez pas les droits pour afficher cette page.</span>';
  • } ?>
  • <p align="center" class="Style10"> - : : : DBProtect 1.5 : : : -</p>
  • <p align="center" class="Style7"><em>Authentification s&eacute;curis&eacute;e utilisant :<br>
  • - BDD MySQL<br>
  • - Sessions PHP<br>
  • - Cryptage par SHA1</em></p>
  • <p align="center" class="Style7"><em><a href="lisez_moi.htm">lire les instructions &gt;&gt;</a></em></p>
  • <div align="center" class="Style7">
  • <table width="300" border="1" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC">
  • <tr>
  • <td><table width="400" border="0" cellpadding="10" cellspacing="0" bgcolor="#eeeeee">
  • <tr>
  • <td width="50%"><span class="Style7">LOGIN</span></td>
  • <td width="50%"><input name="login" type="text" id="login"></td>
  • </tr>
  • <tr>
  • <td width="50%"><span class="Style7">MOT DE PASSE </span></td>
  • <td width="50%"><input name="pass" type="password" id="pass"></td>
  • </tr>
  • <tr>
  • <td height="34" colspan="2"><div align="center">
  • <input type="submit" name="Submit" value="Se connecter">
  • </div></td>
  • </tr>
  • </table></td>
  • </tr>
  • </table>
  • Script par <a href="http://www.borrat.net">DB</a><br />
  • Mise &agrave; jour php5 + cryptage sha1 par aventurier19</div>
  • </form>
  • </body>
  • </html>
<?php
require_once('connexion.php');

/*
			-----------------------------------
			---- SCRIPT D'AUTHENTIFICATION ----
					DBProtect V1.5
				Contact : david@borrat.net
				  Mise &agrave; jour php5
							+
			  cryptage sha1 par aventurier19
			-----------------------------------
*/

session_start(); // début de session

if (isset($_POST['login'])){ // execution apres envoi du formulaire
	$login = mysql_real_escape_string($_POST['login']); // mise en variable du nom d'utilisateur
	$pass = sha1($_POST['pass']); // mise en variable du mot de passe crypté
	
    // requete sur la table administrateurs (on récupère les infos de la personne)
    mysql_select_db($database_dbprotect, $dbprotect);
    $verif_query = sprintf("SELECT * FROM $tablename_dbprotect WHERE login='$login' AND pass='$pass'"); // requête sur la base administrateurs
    $verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
    $row_verif = mysql_fetch_assoc($verif);
    $utilisateur = mysql_num_rows($verif);

	
	if ($utilisateur) {	// On test s'il y a un utilisateur correspondant
	    $_SESSION['authentification'] = 1; // enregistrement de la session
		
		// déclaration des variables de session
		$_SESSION['privilege'] = $row_verif['privilege']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
		$_SESSION['nom'] = $row_verif['nom']; // Son nom
		$_SESSION['prenom'] = $row_verif['prenom']; // Son Prénom
		$_SESSION['login'] = $row_verif['login']; // Son Login
		$_SESSION['pass'] = $row_verif['pass']; // Son mot de passe (à éviter)
		
		header("Location: accueil.php"); // redirection si OK
		exit;
}
	else {
		header("Location: index.php?erreur=login"); // redirection si utilisateur non reconnu
		exit;
	}
}


// GESTION DE LA Déconnexion
if (isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un "contexte" de déconnexion
header("Location: index.php?erreur=delog");
exit;
}
?>
<html>
<head>
<title>Authentification - DBProtect 1.5</title>
<style type="text/css">
<!--
.Style2 {color: #0000FF}
.Style5 {color: #FF0000}
.Style6 {font-family: Verdana, Arial, Helvetica, sans-serif}
.Style7 {font-size: 12px}
.Style10 {
	font-size: 14px;
	font-weight: bold;
}
-->
</style>
</head>
<body>
<form action="" method="post" name="connect" class="Style6">
  <p align="center" class="Style7"><strong>      
      <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "login")) { // Affiche l'erreur
	  echo '<span class="Style5">Echec d\'authentification !!! &gt; login ou mot de passe incorrect</span>'; 
	  }
	  if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog")) { // Affiche l'erreur
	  echo '<span class="Style2">D&eacute;connexion r&eacute;ussie... A bient&ocirc;t '.$_SESSION['prenom'].' !</span>';
	  session_unset();
	  }
	  if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru")) { // Affiche l'erreur 
	  echo '<span class="Style5">Echec d\'authentification !!! &gt; Aucune session n\'est ouverte</span>
      <span class="Style5">ou vous n\'avez pas les droits pour afficher cette page.</span>';
      } ?>
  <p align="center" class="Style10">  - : : :  DBProtect 1.5 : : : -</p>
  <p align="center" class="Style7"><em>Authentification s&eacute;curis&eacute;e utilisant :<br>
  - BDD MySQL<br> 
  - Sessions PHP<br>
  - Cryptage par SHA1</em></p>
  <p align="center" class="Style7"><em><a href="lisez_moi.htm">lire les instructions &gt;&gt;</a></em></p>
  <div align="center" class="Style7">  
    <table width="300" border="1" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC">
      <tr>
        <td><table width="400"  border="0" cellpadding="10" cellspacing="0" bgcolor="#eeeeee">
          <tr>
            <td width="50%"><span class="Style7">LOGIN</span></td>
            <td width="50%"><input name="login" type="text" id="login"></td>
          </tr>
          <tr>
            <td width="50%"><span class="Style7">MOT DE PASSE </span></td>
            <td width="50%"><input name="pass" type="password" id="pass"></td>
          </tr>
          <tr>
            <td height="34" colspan="2"><div align="center">
                <input type="submit" name="Submit" value="Se connecter">
            </div></td>
          </tr>
        </table></td>
      </tr>
    </table>  
  Script par <a href="http://www.borrat.net">DB</a><br />
  Mise &agrave; jour php5 + cryptage sha1 par aventurier19</div>
  
</form>
</body>
</html>

 Conclusion

Je trouve ce script relativement facile à comprendre, à mettre en place et sécurisé un minimum
donc n'hésitez pas à le prendre et l'utiliser.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

31 janvier 2011 12:26:13 :
Retrait des identifiants perso du sql
01 février 2011 15:46:35 :
Correction d'une faille grâce à COD57
03 février 2011 12:39:52 :
Correction de code (encore une fois merci COD57); mise en place d'une variable nom de la table dans le fichier connexion.php ; mise à jour des instructions du fichier lisez_moi.php et ... c'est tout ... pour le moment !
17 août 2011 21:25:38 :
1/ Vérification de l'existence d'un compte avec le même identifiant avant l'ajout d'un compte. 2/ Correction permettant d'empêcher un administrateur de supprimer un compte admin s'il n'y en a qu'un.
12 avril 2012 13:38:07 :
1°/Correction de code avant le partage 2°/Mise à jour du fichier lisez-moi ---- Désolé pour l'attente de correction
12 avril 2012 13:46:46 :
correction

 Sources du même auteur

Source avec Zip Source avec une capture FORMULAIRE DE CHOIX MULTI-CONTACT VALIDE XHTML 1.0 TRANSITIO...

 Sources de la même categorie

Source avec Zip Source avec une capture VALIDATEUR DE FORMULAIRE par Reldan
Source avec Zip SUIVI SERVICE CLIENT PHP par hige52
Source avec Zip POO - FORMULAIRE NEWSLETTER PHP - PROFESSEUR-PHP.COM par mtrix000
Source avec Zip Source avec une capture SELECTEUR DE NOTE par Reldan
Source avec Zip Source avec une capture ESPACE MEMBRE , AVEC CASE OPTIONNEL , SANS MYSQL par sartoz

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture ESPACE MEMBRE , AVEC CASE OPTIONNEL , SANS MYSQL par sartoz
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
Source avec Zip CLASSE UTILISATEUR POUR GESTION SIMPLE DE LOGIN ET DROITS par Archima
CONNEXION LDAP AVEC LOGIN MOT DE PASSE EN PHP par Dyr3e

Commentaires et avis

Commentaire de cod57 le 31/01/2011 21:59:39

bonsoir
ton script est bien réalisé ... il y a tout sauf ?

il faudrait utiliser mysql_real_escape_string()
en effet si tu mets '\' dans login et pass vide surprise ...
je suis pas hacker mais c'est un conseil si tu veux pas te retrouver avec ta base remplie de caractères cyrilliques

ici

if (isset($_POST['login'])){ // execution apres envoi du formulaire
$login = mysql_real_escape_string($_POST['login']); // mise en variable du nom d'utilisateur
$pass = sha1($_POST['pass']); // mise en variable du mot de passe crypté

a++

Commentaire de aventurier19 le 01/02/2011 15:48:52

Merci COD57, c'est corrigé!

Commentaire de cod57 le 01/02/2011 16:51:08

bonjour pas de quoi

ligne 42 je ferais ça, ajoute le exit
et un petit espace apres Location:
sur tout les header() à  vrai dire

header("Location: index.php?erreur=delog");exit;

ça finit tout les processus en cours

SELECT * FROM utilisateurs WHERE login='$login' AND pass='$pass' LIMITI 1
comme : 'uniquement le premier trouvé et c'est tout'

a++

Commentaire de neigedhiver le 03/02/2011 09:28:21

Vite fait :
    Note:

    Si vous utilisez $_SESSION (ou $HTTP_SESSION_VARS pour PHP 4.0.6 ou plus ancien), utilisez unset() pour détruire une variable de session, i.e. unset($_SESSION['nomvariable']);.

Source : http://es.php.net/session_unset

Commentaire de aventurier19 le 03/02/2011 10:54:57

Merci pour ta remarque NEIGEDHIVER mais j'utilise session_unset() pour détruire toutes les variables de la session courante.
unset() permet de détruire les variables de son choix (on peut toutes les détruiremais il aurait fallut faire unset($privilege, $nom, $prenom, $login, $pass); /* c'est lourd, non? */

COD57 j'ai pris bonne note de ton info je le mettrait bientôt car j'essai d'emplêcher la création de doublon en login avec une requête du type
SELECT * FROM $tablename_dbprotect WHERE (`login` LIKE '$login')
De plus le nom de la table sera personalisable plus facilemùent grâce à une variable $tablename_dbprotect dans le fichier de connexion

PS: n'hésitez pas à noter et dire ce que vous en pensez !
@+

Commentaire de aventurier19 le 03/02/2011 12:43:14

RE Bonjour à tous

bon j'ai mis mon script à jour plus tôt que prévu, je le reposterai plus tard 2 fonctions supplementaires (anti-doublon et modification d'utilisateur sans avoir besoin de les supprimer)

Commentaire de arta le 07/02/2011 07:15:58

Bonjour aventurier19
Bon ben on va attendre les deux fonctions pour télécharger ;)

Commentaire de neigedhiver le 10/02/2011 00:12:14

"mais j'utilise session_unset() pour détruire toutes les variables de la session courante."
Justement : il ne faut pas.

"unset($privilege, $nom, $prenom, $login, $pass); /* c'est lourd, non? */"
Non.
Sinon, il est possible de stocker en session des tableaux associatifs. Ça donnerait :
unset($_SESSION['user_data']); // C'est léger, non ?

Commentaire de aventurier19 le 11/02/2011 16:53:45

Je ne comprends pas ; j'ai 2 questions :

1 - pourquoi il ne faut pas détruire toutes les variables de la session courante, une fois deconnecté ça ne sertt à rien de garder les variables.
2 - en quoi unset($_SESSION['user_data']); va être différent de session_unset(); ?

Commentaire de neigedhiver le 12/02/2011 00:37:33

Où ai-je écrit qu'il ne fallait pas détruire les variables ?
Au contraire ! Il le faut.

MAIS

il faut le faire correctement, c'est à dire en utilisant la fonction unset() et non session_unregister() (pardon, erreur de ma part en recopiant le lien, je voulais dire : http://fr.php.net/session_unregister)
La fonction session_unregister() est obsolète depuis PHP5.3 ce qui signifie qu'elle est amenée à disparaitre.

Commentaire de aventurier19 le 14/02/2011 09:55:39

Pourquoi me parle tu de session_unregister, j'utilise session_unset ?!?
Je ne sais toujours pas pourquoi session_unset ne détruit pas correctement les variables!

BREF

Si je récapitule, pour la fonction unset (désolé je débute):
- je dois créer à la ligne 38 un tableau associatif du genre $user_data=array($_SESSION['privilege'], $_SESSION['nom'], $_SESSION['prenom'], $_SESSION['login'], $_SESSION['pass']);
- pour fermer une session, j'utilise unset($_SESSION['user_data']); à la place de mon session_unset(); (qui n'est pas encore obsolète)

Merci pour tes conseils et ta patience. Désolé si je suis insistant mais je comprends les choses lentement faute de temps!

Commentaire de janhsh le 21/02/2011 00:55:53 2/10

Pas mal d'erreur

1.
$verif_query=sprintf("SELECT * FROM utilisateurs WHERE login='$login' AND pass='$pass' LIMIT 1"); // requête sur la base administrateurs
Je ne vois pas l'utilité de sprintf ici, surtout sans "spécificateur de conversion" dans la chaine.

2. "cryptage par SHA1" mais aucun SHA1 n'est utilisé dans le code.


3.<html><head>
où les le doctype !!  on ne sait pas si c'est du HTML4, du XHTML, ou autre (à ce niveau la il y a aussi des erreur.




Commentaire de aventurier19 le 22/02/2011 22:29:39

janhsh
je te remercierai de ne pas te limoter à regarder la partie de code que tu vois avant de critiquer car c'est uniquement l'index.
Si tu souhaite laisser un "bon" commentaire et une note qui je pense correspondrait mieux au travail
merci de télécharger tout le code.

Cordialement,
moi

Commentaire de balatus le 24/09/2011 15:35:34

Moi chez mois sa me dis que les info sont pas bonne... en gros le formulaire ne fonctionne pas correctement

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

PHP [ par violent ] salut a toute la communautee codes sources. voila, je travaille actuellement sur une solution de gestion de temp de connection a internet pour une st Redirection du navigateur [ par amateurjava ] Bonjour, j'ai crée un site avec un login et mdp qui securise l'acces. Lorsque l'acces est accepté (user présent dans une BD), il génere une variable Contole de connexion utilisateur unique [ par tlaloctzin ] Tout dabor bonjour a tous, voila mon problème , je souhaiterais mettre en place une page avec acces par login et mot de passe contenus dans bdd mysql connexion membres [ par laloire33150 ] Bonjour, j'ai une page de connexion, et deux pages membres différentes je voudrais pouvoir rediriger les membres actifs vers une page et les membres Aide espace membre [ par vetudiant ] Rebonjour, suite à une faute de ma part, je refais ce message afin d'élucider mon probleme. On m'a apparemment dit de mieux structurer mes pages, ma Login Inscription et Connexion [ par flashvolte ] Bonjour, à tous.Après mes nombreuses, nombreuses recherche sur google.. partout je n'ai pas trouver comment faire un login avec Inscription et connexi Warning incomprehensible lors de l'exécution d'une requette [ par karimfellah ] Bonjour cher amis, ca marche les affaires... j'ai une question a vous poser: ma fonction et comme suit: [color=green]public function verifier_utilisa Nicodelphi [ par Nicodelphi ] Bonjour Voila mon probleme je code un site en php et a l'interieur de se site j'effectue une requete update afin de modifier les droit utilisateur d compte utilisateur avec login mot de passe lié à l'ordinateur [ par chmartin ] Bonjour, voici ma problématique : je réalise un intranet, je voudrais associé un utilisateur à son ordinateur. c'est à dire un login et un mot de p Probleme de table [ par jbquentin ] Bonjour, Je suis en train de faire un test d'inscription, pour voir si j'arrive a faire une page inscription, mot de passe, login etc... Mais j'ai u


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 : 1,030 sec (4)

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