Login sha1 + création utilisateur

Soyez le premier à donner votre avis sur cette source.

Vue 14 620 fois - Téléchargée 3 448 fois

Description

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 / Exemple :


<?php
require_once('connexion.php');

/*
			-----------------------------------
			---- SCRIPT D'AUTHENTIFICATION ----
					DBProtect V1.5
				Contact : david@borrat.net
				  Mise à 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 !!! > login ou mot de passe incorrect</span>'; } if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog")) { // Affiche l'erreur echo '<span class="Style2">Déconnexion réussie... A bientôt '.$_SESSION['prenom'].' !</span>'; session_unset(); } if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru")) { // Affiche l'erreur echo '<span class="Style5">Echec d\'authentification !!! > 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écurisé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 >></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 à 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.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
dimanche 30 mars 2008
Statut
Membre
Dernière intervention
24 septembre 2011

Moi chez mois sa me dis que les info sont pas bonne... en gros le formulaire ne fonctionne pas correctement
Messages postés
102
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
23 juillet 2013

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
Messages postés
32
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
24 janvier 2015

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.
Messages postés
102
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
23 juillet 2013

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!
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
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.
Afficher les 14 commentaires

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.