IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Formulaire d'authentification et MD5 [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 263
    Par défaut Formulaire d'authentification et MD5
    Bonjour a tous, j'ai une partie enregistrement sur mon site, quand je créer un utlisateur le mot de passe est crypter en MD5.

    Quand l'utilisateur viens s'authentifier, j'ai recuperer ce qu'il a rentrer en methode POST et je le crypte en MD5 dans une variable et je fait une requete SQL qui compare le nom et le mot de passe tout deux en MD5.

    Je ne sais pas si ma logique est bonne et si j'utilise la fonction MD5 corectement...


    Pouvez vous me donner votre avi?

    Script d'inscription d'un nouveau membre:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    case "ajout_membre" :
     
    /*connection a la BDD*/
     
    require_once('connec_bdd.php');
     
    	/*recupere les valeur des champs par les variables POST et conserve les caracteres spéciaux grace a mysql_real_escape_string*/
     
    		$pseudo=mysql_real_escape_string($_POST['nom']);
     
    		$motdepasse=md5(mysql_real_escape_string($_POST['motdepasse']));
     
     
    	/*verifie le contenue des champs*/
     
     
    		if((isset($pseudo) && isset($motdepasse)) && ($pseudo!="" && $motdepasse!="") )
    	{  
     
    	/*Si oui crée un nouvelle enregistrement dans la table*/
     
    		$requete = "INSERT INTO utilisateur (nom, pass) VALUES
    		('".$pseudo."','".$motdepasse."')";
     
    		$resultat = mysql_query($requete) or die(mysql_error());
     
    	/*il crée deux fichier texte et deux dossier avec le nom de l'utilisateur pour la galerie photos. */
     
    					$fp = fopen("../galerie/photos_$pseudo.txt","w+");
     
    					$fp2 = fopen("../galerie/menu_liste_$pseudo.txt","w+");
     
    					mkdir ("..\galerie\miniatures_$pseudo", 0777);
     
    					mkdir ("..\galerie\images_$pseudo", 0777);
     
    					$fichier = '../galerie/menu_liste_'.$pseudo.'.txt';
     
    					$contenu = 'Galerie de '.$pseudo.';'."\r\n";
     
    					file_put_contents($fichier, $contenu, FILE_APPEND);
     
    					/*Ecrie dans le menu liste le chemin du dossier photos*/
     
    					$contenu2 = 'Images_'.$pseudo.'; photos ; photos_'.$pseudo.'.txt;';
     
    					file_put_contents($fichier, $contenu2, FILE_APPEND);
     
     
    		echo "L'inscription a bien été transmise";
     
    	/*javascript de redirection*/
     
    		echo '<SCRIPT LANGUAGE="JavaScript">
    				function redirect() {
    				window.location="corine.php"
    						}
    				setTimeout("redirect()",3000); 		  </SCRIPT>';
     
    						}
     
    	/* sinon message d'alerte*/
     
    		else
    				{
    					echo "Vous n'avez pas rentré tout les champs obligatoire.";
     
    					echo '<SCRIPT LANGUAGE="JavaScript">
    											function redirect() {
    								window.location="n_membre.php"
    							}
    							setTimeout("redirect()",3000); 		  </SCRIPT>';
    				}
     
    		break;

    Script d'authentification d'un membre:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    case "verification" :
     
     
    /*Initialise la session*/
     
    			session_start();
     
    /*Connection a la BDD*/
     
    require_once('connec_bdd.php');
     
     
    		/*Verifie si il y a quelque chose dans les variables POST*/
     
     
    				if(isset($_POST['nom']) and isset($_POST['motdepasse']))
     
    		{  
     
    		/*Transfert les données des variables POST dans des variables*/
     
    				$pseudo=$_POST['nom'];
     
    				$motdepasse=(md5$_POST['motdepasse']);
     
    		/*recupere toute les champs de l'utlisateur*/
     
    				$requete = "SELECT * FROM utilisateur WHERE nom = '$pseudo' AND pass = '$motdepasse'";
     
     
    				$result = mysql_query($requete) or die(mysql_error());
     
     
    		/*initialise la varible a false*/
     
    				$row=false;
     
    		/* si row est egale a true alors il transfert les informations dans les variables de sessions*/
     
    				if ($row = mysql_fetch_array($result)) {
     
    					$_SESSION['id_user']=$row['id_user'];
    					$_SESSION['nom']=$row['nom'];
    					$_SESSION['texte']=$row['texte'];
    					$_SESSION['texte2']=$row['texte2'];
    					$_SESSION['statut']=$row['statut'];	
    					$_SESSION['droit']=$row['droit'];	
     
     
    		/* si le nom de l'utilisteur est egale a celui de l'admin il est rediriger vers sa partie spécifique*/
     
    				if ($pseudo == 'corine keiflin')
     
    			{
     
    		/*attribution d'un nouveau numéro de session*/
     
    				session_regenerate_id();
     
    					header("Location: corine.php");
     
    			}
     
    		else
     
    		/*Sinon le redirection vers la partie membre*/
     
    			{
     
    				session_regenerate_id();
     
    					header("Location: action_membre.php");
     
    			}			
     
    			}
     
     
    		/*si il le tableau est a FALSE (vide)*/
     
     
    				}if(!$row)
     
    				{
     
     
    		 echo "Ce compte n'éxiste pas";
     
    		echo '<SCRIPT LANGUAGE="JavaScript">
    					function redirect() {
    					window.location="auth.php"
    				}
    			setTimeout("redirect()",23000); 		  </SCRIPT>';
     
     
     
     
    				}
     
    					break;

    Merci d'avance!!!!

  2. #2
    Membre expérimenté Avatar de BlackSmith
    Inscrit en
    Mars 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mars 2008
    Messages : 181
    Par défaut
    IL te manque une ( dans le script de connexion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motdepasse=(md5($_POST['motdepasse']));

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 263
    Par défaut
    Oui effectivment, j'avais telment fait de test que j'ai pas trop bien retaper le code avant de vous l'afficher...


    J'l'ai syntaxer comme sa:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motdepasse=md5($_POST['motdepasse']);

    Sinon a par ce probleme de syntaxe, est c'que mon utlisation de la fonction MD5 est bonne???

  4. #4
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    presque

    Dans un cas tu fait :
    $motdepasse=md5(mysql_real_escape_string($_POST['motdepasse']));

    Dans l'autre tu fait :
    $motdepasse=md5($_POST['motdepasse']);

    Donc si tu met une apostrophe dans le mot de passe, quelque chose me dit que ca ne marchera pas ;o)

    Plus généralement, md5 transformant n'importe quoi en suite alphanumerique, mysql_real_escape_string ne sert a rien ici.

    Sinon le reste me parait pas mal...

    A si, quand meme, n'oublie pas le mysql_real_escape_string dans la 2eme partie, quand tu fait :
    $pseudo=$_POST['nom'];

    Sinon bonjour les injections SQL ^^

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 263
    Par défaut
    Merci pour toute test infos et conseils!!!

    Pour la deuxieme partie vu que je compare seulment la variable recuperer a celle de la base de donnée je ne pensait pas qu'il fallait mettre mysql_real_escape_string, mais je vais faire sa de suite!!!


    Donc maintnant meme si je fait que comparer dans une requete SQL une donnée d'un formaulaire a un champ d'une BDD vaut mieux que je mette mysql_real_escape_string si j'ai bien comprie????

  6. #6
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    oui. mysql_real_escape_string c'est a utiliser TOUT LE TEMPS si tu n'es pas sur du contenu de la donnée (ie = donnée récupérée depuis un tableau super global $_GET/$_POST/$_COOKIE, etc...)

    exemple (si magic_quotes_gpc=FALSE):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pseudo=$_POST['nom'];
    $motdepasse=md5($_POST['motdepasse']);
    $requete = "SELECT * FROM utilisateur WHERE nom = '$pseudo' AND pass = '$motdepasse'";
    si $pseudo vaut 'or''='

    La requete devient :

    SELECT * FROM utilisateur WHERE nom = ''or''='' AND pass = '...'

    => La requete renverra TOUJOURS quelque chose.

    Tandis qu'avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pseudo=mysql_real_escape_string($_POST['nom']);
    $motdepasse=md5($_POST['motdepasse']);
    $requete = "SELECT * FROM utilisateur WHERE nom = '$pseudo' AND pass = '$motdepasse'";
    si $pseudo vaut 'or''='

    La requete devient :

    SELECT * FROM utilisateur WHERE nom = '\'or\'\'=\'' AND pass = '...'

    Et cette fois ci la requete est correcte.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 263
    Par défaut
    Ok merci pour tes infos qui me seront bien utile!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jaas formulaire d'authentification tomcat
    Par rc_29 dans le forum Sécurité
    Réponses: 3
    Dernier message: 15/03/2008, 07h31
  2. Formulaire Identification / Authentification
    Par chriswhite06 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 20/07/2007, 15h52
  3. Faire un formulaire d'authentification sous accèss
    Par Carnage76 dans le forum Sécurité
    Réponses: 1
    Dernier message: 11/05/2007, 11h51
  4. Créer un formulaire d'authentification
    Par horri dans le forum Langage
    Réponses: 6
    Dernier message: 09/05/2006, 19h22
  5. Aide sur formulaire d'authentification
    Par jeffrey_06 dans le forum Langage
    Réponses: 3
    Dernier message: 04/04/2006, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo