LOGIN SHA1 + CRÉATION UTILISATEUR

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 - 31 janv. 2011 à 21:59
balatus Messages postés 2 Date d'inscription dimanche 30 mars 2008 Statut Membre Dernière intervention 24 septembre 2011 - 24 sept. 2011 à 15:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52771-login-sha1-creation-utilisateur

balatus Messages postés 2 Date d'inscription dimanche 30 mars 2008 Statut Membre Dernière intervention 24 septembre 2011
24 sept. 2011 à 15:35
Moi chez mois sa me dis que les info sont pas bonne... en gros le formulaire ne fonctionne pas correctement
aventurier19 Messages postés 102 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 23 juillet 2013
22 févr. 2011 à 22:29
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
cs_janhsh Messages postés 31 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 janvier 2015
21 févr. 2011 à 00:55
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.
aventurier19 Messages postés 102 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 23 juillet 2013
14 févr. 2011 à 09:55
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!
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
12 févr. 2011 à 00:37
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.
aventurier19 Messages postés 102 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 23 juillet 2013
11 févr. 2011 à 16:53
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(); ?
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
10 févr. 2011 à 00:12
"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 ?
cs_arta Messages postés 98 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 24 juillet 2013
7 févr. 2011 à 07:15
Bonjour aventurier19
Bon ben on va attendre les deux fonctions pour télécharger ;)
aventurier19 Messages postés 102 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 23 juillet 2013
3 févr. 2011 à 12:43
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)
aventurier19 Messages postés 102 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 23 juillet 2013
3 févr. 2011 à 10:54
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 !
@+
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
3 févr. 2011 à 09:28
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
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
1 févr. 2011 à 16:51
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++
aventurier19 Messages postés 102 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 23 juillet 2013
1 févr. 2011 à 15:48
Merci COD57, c'est corrigé!
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
31 janv. 2011 à 21:59
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++
Rejoignez-nous