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

Langage PHP Discussion :

Code de vérification de connexion


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut Code de vérification de connexion
    je n'est pas de réel problème ^^
    je veux juste un avis de personnes plus professionnels sur un code pour vérifier une 'connexion' avec après une ouverture de session.
    merci d avance a ceux qui me donnerons leur avis

    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
     
           <?php
     
    	// Récupération des informations du fichier blocnote (fichier txt).
    	$data[] = array();                        // Tableau qui contiendra les données de façon structurée.
    	$fileHandle = fopen("../../../txt/Fichier_user.txt", "r+");   // Ouverture du fichier "blocnote.txt"
    	if ($fileHandle) 
    		{
    			while (($buffer = fgets($fileHandle, 4096)) !== false) 
    				{    // Lecture des lignes du fichier, une par une.
    					list($nom,  $prenom, $adresse, $bday, $mail, $mot_de_passe,  $liste, $sexe) = explode('|', $buffer);    
    					// Séparation des données de la ligne en cours en fonction du caractère "|".
    					$data[] = array('nom'=>$nom, 'prenom' => $prenom,'bday' => $bday, 'mail' => $mail,'mot_de_passe' => $mot_de_passe, 'liste' =>$liste, 'sexe' =>$sexe); 
    					// Ajout d'un tableau dans notre tableau de données contenant le joueur et les preprenom.
    				}
    			fclose($fileHandle);                    
    			// fermeture du fichier
    		}
    ?>
     
    <?php
     
     
    	$nb_elements = count($data);
    	$nb_lignes= $nb_elements;
     
    	for ($i = 1; $i <= $nb_lignes; $i ++) 
    		{  
     
    			$position = $i;         
    			// Définition de la position à afficher
     
    			// On définit un login et un mot de passe de base pour tester notre exemple. Cependant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site
    			 $data[$i]['nom'];
    			 $data[$i]['mot_de_passe'];
     
    			// on teste si nos variables sont définies
    			if (isset($_POST['login']) && isset($_POST['pass'])) 
    				{
     
    					// on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
    					if ($data[$i]['nom']= $_POST['login'] && $data[$i]['mot_de_passe'] == $_POST['pass']) 
    						{
    							// dans ce cas, tout est ok, on peut démarrer notre session
     
    							// on la démarre :)
    							session_start ();
    							// on enregistre les paramètres de notre visiteur comme variables de session ($login et $pass) (notez bien que l'on utilise pas le $ pour enregistrer ces variables)
    							$_SESSION['login'] = $_POST['login'];
    							$_SESSION['pass'] = $_POST['pass'];
     
    							// on redirige notre visiteur vers une page de notre section membre
    							header ('location: page_membre.php');
    						}
    					else 
    						{
    							// Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait
    							echo '<body onLoad="alert(\'Membre non reconnu...\')">';
    							// puis on le redirige vers la page d'accueil
    							echo '<meta http-equiv="refresh" content="0;URL=../../site_connection_user/acceuil_membre.php">';
    						}
    				}
    			else 
    				{
    					echo 'Les variables du formulaire ne sont pas déclarées.';
    				}
     
    		} // Fin de la boucle for
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    - première ligne c'est :
    Tel quel tu l'as écris, tu obtiendrais array(0=>array())
    - for ($i = 1; $i <= $nb_lignes; $i ++) utilise plutôt des boucles foreach pour parcourir des tableaux

    - tu peux regrouper tes isset if (isset($_POST['login'], $_POST['pass'])).

    - $data[$i]['nom']= $_POST['login'] c'est ===
    Si tu es en PHP5.6, utilise même hash_equals()

    - Il est essentiel que le fichier Fichier_user.txt ne soit pas accessible par le serveur web ; ca serait quand même mieux d'avoir des hash des mots de passe, plutôt que les mots de passe en clair.

    - dans la logique de ton code, plutôt que de lire une première fois l'intégralité du fichier, puis une deuxième fois le résultat pour chercher le login/pass, fait une seule lecture qui cherche directement le login/pass.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    oula ^^" tu me donne du taff la :p y a plein de chose que je ne connait pas :p
    ^^ go sur les tutos :p pour essayer de découvrir et assimiler tout cela :p

    par contre trois = ?
    également je comprend pas trop le système du cryptage du mdp. Je doit le faire quand ? et si je le fait, cela ne va t'il pas poser de soucis lorsque je vais vouloir le comparer avec le mot utiliser pour tenter de se connecter ?

  4. #4
    Membre habitué Avatar de Azerx
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 116
    Points : 185
    Points
    185
    Par défaut
    Bonjour,

    Citation Envoyé par joe0703 Voir le message
    également je comprend pas trop le système du cryptage du mdp, cela ne va t'il pas poser de soucis lorsque je vais vouloir le comparer avec le mot utiliser pour tenter de se connecter ?
    Tu hash le MDP avant de le rentrer dans ta base. Ensuite pour pouvoir le comparer il suffit simplement de hasher le MDP utilisé pour tenter de se connecter. Si ils sont identiques, la version hashée restera identique

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    hummmm

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    if (!empty($_POST['nom']) && !empty($_POST['prenom'])&& !empty($_POST['adresse']) && !empty($_POST['bday']) && !empty($_POST['mail']) && !empty($_POST['mot_de_passe']) && !empty($_POST['liste']) && !empty($_POST['sexe'])) 
    {
    	$nom= $_POST['nom'];
    	$prenom= $_POST['prenom'];
    	$adresse= $_POST['adresse'];
    	$bday= $_POST['bday'];
    	$mail= $_POST['mail'];
    	$mail2= $_POST['mail2'];
    	$mot_de_passe=	$_POST['mot_de_passe'];
    	$hash = sha1('mot_de_passe') ; comme cela ? 
    	$liste=$_POST['liste'] ;
    	$sexe=$_POST['sexe'];
    	file_put_contents("../../TXT/Fichier_user.txt", $nom .'|'. $prenom .'|'. $adresse .'|'. $bday .'|'. $mail .'|'. $hash .'|'. $liste .'|'. $sexe . "\r\n" ,FILE_APPEND);

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    - dans la logique de ton code, plutôt que de lire une première fois l'intégralité du fichier, puis une deuxième fois le résultat pour chercher le login/pass, fait une seule lecture qui cherche directement le login/pass.
    - tu peux regrouper tes isset if (isset($_POST['login'], $_POST['pass'])).
    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
     
           <?php
     
    	// Récupération des informations du fichier blocnote (fichier txt).
    	$data[] = array();                        // Tableau qui contiendra les données de façon structurée.
    	$fileHandle = fopen("../../../txt/Fichier_user.txt", "r+");   // Ouverture du fichier "blocnote.txt"
    	if ($fileHandle) 
    		{
    			while (($buffer = fgets($fileHandle, 4096)) !== false) 
    				{    // Lecture des lignes du fichier, une par une.
    					list($nom,  $prenom, $adresse, $bday, $mail, $mot_de_passe,  $liste, $sexe) = explode('|', $buffer);    
    					// Séparation des données de la ligne en cours en fonction du caractère "|".
    					$data[] = array('nom'=>$nom, 'prenom' => $prenom,'bday' => $bday, 'mail' => $mail,'mot_de_passe' => $mot_de_passe,                     'liste' =>$liste, 'sexe' =>$sexe); 
    					// Ajout d'un tableau dans notre tableau de données contenant le joueur et les preprenom.
                                             // On définit un login et un mot de passe de base pour tester notre exemple. Cependant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site
    			 $data[$i]['nom'];
    			 $data[$i]['mot_de_passe'];
     
    			// on teste si nos variables sont définies
    			if (isset($_POST['login'] ,$_POST['pass'])) 
    				{
     
    					// on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
    					if ($data[$i]['nom']== $_POST['login'] && $data[$i]['mot_de_passe'] == $_POST['pass']) 
    						{
    							// dans ce cas, tout est ok, on peut démarrer notre session
     
    							// on la démarre :)
    							session_start ();
    							// on enregistre les paramètres de notre visiteur comme variables de session ($login et $pass) (notez bien que l'on utilise pas le $ pour enregistrer ces variables)
    							$_SESSION['login'] = $_POST['login'];
    							$_SESSION['pass'] = $_POST['pass'];
     
    							// on redirige notre visiteur vers une page de notre section membre
    							header ('location: page_membre.php');
    						}
    					else 
    						{
    							// Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait
    							echo '<body onLoad="alert(\'Membre non reconnu...\')">';
    							// puis on le redirige vers la page d'accueil
    							echo '<meta http-equiv="refresh" content="0;URL=../../site_connection_user/acceuil_membre.php">';
    						}
    				}
    			else 
    				{
    					echo 'Les variables du formulaire ne sont pas déclarées.';
    				}
     
    
    				}
    			fclose($fileHandle);                    
    			// fermeture du fichier
    		}
    
     
    			
    ?>
    comme cela ?

  7. #7
    Membre habitué Avatar de Azerx
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2013
    Messages : 116
    Points : 185
    Points
    185
    Par défaut
    Comme cela je crois:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    function chiffrer($texte_en_clair) {
      $texte_crypte = hash('sha256', $texte_en_clair);
      return $texte_crypte;
    }
     
    $mot_passe_en_clair = 'apple';
    $mot_passe_crypte = chiffrer($mot_passe_en_clair);
    echo $mot_passe_crypte;
    //affiche '3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b'
    ?>

    Il faut également que tu ajoute une chaine fixe appelée "seed" (toujours la même pour tous les mots de passes de tous les utilisateurs) à ton mot de passe avant de le 'hasher', ceci pour éviter les attaques par dictionnaire.

    Du genre
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $texte_en_clair = $texte_en_clair+$ma_chaine_fixe;
    function chiffrer($texte_en_clair) {
      $texte_crypte = hash('sha256', $texte_en_clair);
      return $texte_crypte;
    }
     
    $mot_passe_en_clair = 'apple';
    $mot_passe_crypte = chiffrer($mot_passe_en_clair);
    echo $mot_passe_crypte;
    //affiche '3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b'
    ?>

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    et cette chaîne fixe est a définir ou ?

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    c'est mieux comme cela ?


    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
     
    <?php
    $ma_chaine_fixe='bonjour';
    $texte_en_clair = $texte_en_clair+$ma_chaine_fixe;
    function chiffrer($texte_en_clair) {
      $texte_crypte = hash('sha256', $texte_en_clair);
      return $texte_crypte;
    }
    
    
     
    	// Récupération des informations du fichier blocnote (fichier txt).
    	$data[] = array();                        // Tableau qui contiendra les données de façon structurée.
    	$fileHandle = fopen("../../../txt/Fichier_user.txt", "r+");   // Ouverture du fichier "blocnote.txt"
    	if ($fileHandle) 
    		{
    			while (($buffer = fgets($fileHandle, 4096)) !== false) 
    				{    // Lecture des lignes du fichier, une par une.
    					list($nom,  $prenom, $adresse, $bday, $mail, $mot_de_passe,  $liste, $sexe) = explode('|', $buffer);    
    					// Séparation des données de la ligne en cours en fonction du caractère "|".
    					$data[] = array('nom'=>$nom, 'prenom' => $prenom,'bday' => $bday, 'mail' => $mail,'mot_de_passe' => $mot_de_passe,                     'liste' =>$liste, 'sexe' =>$sexe); 
    					// Ajout d'un tableau dans notre tableau de données contenant le joueur et les prenom.
                                             // On définit un login et un mot de passe de base pour tester notre exemple. Cependant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site
    			 $data[$i]['nom'];
    			 $data[$i]['mot_de_passe'];
     
    			// on teste si nos variables sont définies
    			if (isset($_POST['login'] ,$_POST['pass'])) 
    				{
                                              $login= $_POST['login'];
                                              $pass=$_POST['pass'];
                                              $pass_crypte = chiffrer($pass);
                                               
    					// on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
    					if ($data[$i]['nom']== $login && $data[$i]['mot_de_passe'] == $pass_crypte) 
    						{
    							// dans ce cas, tout est ok, on peut démarrer notre session
     
    							// on la démarre :)
    							session_start ();
    							// on enregistre les paramètres de notre visiteur comme variables de session ($login et $pass) (notez bien que l'on utilise pas le $ pour enregistrer ces variables)
    							$_SESSION['login'] = $_POST['login'];
    							$_SESSION['pass'] = $_POST['pass'];
     
    							// on redirige notre visiteur vers une page de notre section membre
    							header ('location: page_membre.php');
    						}
    					else 
    						{
    							// Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait
    							echo '<body onLoad="alert(\'Membre non reconnu...\')">';
    							// puis on le redirige vers la page d'accueil
    							echo '<meta http-equiv="refresh" content="0;URL=../../site_connection_user/acceuil_membre.php">';
    						}
    				}
    			else 
    				{
    					echo 'Les variables du formulaire ne sont pas déclarées.';
    				}
     
    
    				}
    			fclose($fileHandle);                    
    			// fermeture du fichier
    		}
    
     
    			
    ?>

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    (@Azerx aussi) :


    password_hash() va créer un salt aléatoire si vous n'en fournissez pas, et c'est généralement la façon la plus sécurisé et la plus simple.
    1/ Dans la base de données (ou ici dans ton fichier txt), il ne doit y avoir QUE les mots de passes hashés.
    Enregistrement :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $mpd_hash = password_hash( $mpd_clair );

    2/ Connexion user


    a/ on vérifie d'abord que le login_rentre_par_le_user existe bien dans la Bdd (le fichier) -> on parcours le fichier à la recherche de la ligne conttenant le login
    $login_rentre_par_le_user -> recherche
    existe ?
    on récupère le mpd_hash -> $mpd_hash

    b/ si c'est bien le cas, on récupére le mpd_hash de cette ligne.

    c/ on le compare au mot de passe rentré dans le formualire de connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if( $mpd_hash == password_hash( $mpd_rentre_par_le_user ) )
    {
      // OK !
    }
    REMARQUE IMPORTANTE :
    SI TU NE FAIS PAS LES CORRECTIONS qu'on te donne, ça ne pourra pas marcher...
    sabotage t'a expliqué que CE N'EST PAS la bonne syntaxe ici.

    Quant au titre du topic : "juste une petite confirmation d'un code de vérification de connexion "... => TOUTE LA LOGIQUE de ton code EST A REVOIR.
    Là encore, sabotage t'a mis sur la voie.
    Dernière modification par Invité ; 08/04/2016 à 15h13.

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    SI TU NE FAIS PAS LES CORRECTIONS qu'on te donne, ça ne pourra pas marcher...
    sabotage t'a expliqué que CE N'EST PAS la bonne syntaxe ici.
    j'essaye de les faire les une apres les autres en tentant de comprendre.
    D'ailleurs, ce point précis du $data , je ne comprend pas trop l'erreur, mon fichier texte étant un tableau bidimensionnel, n'est il pas donc normal d avoir ce que j'ai mis ?

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    cela donnerais donc avec je pense toutes les informations transmissent :


    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
     
     
     
    <?php
    $options = [
        'cost' => 12,
    ];
     
     
     
    	// Récupération des informations du fichier blocnote (fichier txt).
    	$data = array();                        // Tableau qui contiendra les données de façon structurée.
    	$fileHandle = fopen("../../../txt/Fichier_user.txt", "r+");   // Ouverture du fichier "blocnote.txt"
    	if ($fileHandle) 
    		{
    			while (($buffer = fgets($fileHandle, 4096)) !== false) 
    				{    // Lecture des lignes du fichier, une par une.
    					list($nom,  $prenom, $adresse, $bday, $mail, $mot_de_passe_crypte,  $liste, $sexe) = explode('|', $buffer);    
    					// Séparation des données de la ligne en cours en fonction du caractère "|".
    					$data = array('nom'=>$nom, 'prenom' => $prenom,'bday' => $bday, 'mail' => $mail,'mot_de_passe_crypte' => $mot_de_passe_crypte,                     'liste' =>$liste, 'sexe' =>$sexe); 
    					// Ajout d'un tableau dans notre tableau de données contenant le joueur et les prenom.
                                             // On définit un login et un mot de passe de base pour tester notre exemple. Cependant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site
    			 $data['nom'];
    			 $data['mot_de_passe_crypte'];
     
    			// on teste si nos variables sont définies
    			if (isset($_POST['login'] ,$_POST['pass'])) 
    				{
    					$login= $_POST['login'];
                        $pass=$_POST['pass'];
                        $pass_crypte = password_hash($pass, PASSWORD_BCRYPT, $options);
     
    					if (password_verify($pass, $pass_crypte)) 
    						{
    				// on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
    							if (hash_equals($data['nom'] , $login) && hash_equals( $data['mot_de_passe_crypte'] , $pass_crypte)) 
    						       {
    							      // dans ce cas, tout est ok, on peut démarrer notre session
     
    							      // on la démarre :)
    									session_start ();
    									// on enregistre les paramètres de notre visiteur comme variables de session ($login et $pass) (notez bien que l'on utilise pas le $   pour enregistrer ces variables)
    									$_SESSION['login'] = $_POST['login'];
    									$_SESSION['pass_crypte'] = $pass_crypte;
     
    									// on redirige notre visiteur vers une page de notre section membre
    									header ('location: page_membre.php');
    								}
    					         else 
    								{
    								   // Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait
    								   echo '<body onLoad="alert(\'Membre non reconnu...\')">';
    								   // puis on le redirige vers la page d'accueil
    								   echo '<meta http-equiv="refresh" content="0;URL=../acceuil.php">';
    								}
    						} 
    					else 
                            {
    							echo 'Le mot de passe est invalide.';
                            }
    				}
    			else 
    				{
    					echo 'Les variables du formulaire ne sont pas déclarées.';
    				}
     
     
    				}
    			fclose($fileHandle);                    
    			// fermeture du fichier
    		}
     
     
     
    ?>
    c'est ça ou pas ?

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    bon ça doit pas être ça car j ai ce message a chaque fois

    Nom : mmmm.jpg
Affichages : 169
Taille : 9,3 Ko

  14. #14
    Invité
    Invité(e)
    Par défaut
    Perdu.


    Je t'ai donné la marche à suivre dans mon précédent message.

    1/ inutile de se compliquer inutilement la vie avec le $options du password_hash().

    2/ Tu fais le travail à l'envers :
    Inutile de parcourir le fichier tant que tu n'as pas reçu le login et mot de passe tapés.
    => on ne le fais qu'après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (isset($_POST['login'] ,$_POST['pass']))
    {
       // 1/ On parcours le fichier, à la recherhce de la ligne où le login matche $_POST['login'].
       // 2/ on récupère le pwd_crypte correspondant
       // 3/ on compare le pwd_crypte avec password_verify($_POST['pass'])
       // si ça matche : BINGO ! c'est OK !
    }
    N.B. Peut-on voir un EXTRAIT de ton FICHIER ?

  15. #15
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    lol|lol|lol|2016-04-12|lol@lol.fr|$2y$12$UT4p0PjI6UOBZlwZswihMuM9q7fgQOAVB4qaRk62M4hknnD7h6o3G|chomeur|homme

    et le code ressemblerais donc a cela ?
    ou pas car toujours la meme erreur mdr :p

    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
     
     
    <?php
    $options = [
        'cost' => 12,
    ];
    // on teste si nos variables sont définies
    	if (isset($_POST['login'] ,$_POST['pass'])) 
    		{
    			$login= $_POST['login'];
                $pass=$_POST['pass'];
    			// on crypte le mot de passe
                $pass_crypte = password_hash($pass, PASSWORD_BCRYPT, $options);
                // on verifie le cryptage                             
    			if (password_verify($pass, $pass_crypte)) 
    				{
     
    					// Récupération des informations du fichier blocnote (fichier txt).
    					$data = array();                        // Tableau qui contiendra les données de façon structurée.
    					$fileHandle = fopen("../../../txt/Fichier_user.txt", "r+");   // Ouverture du fichier "blocnote.txt"
    					if ($fileHandle) 
    						{
    							while (($buffer = fgets($fileHandle, 4096)) !== false) 
    								{    // Lecture des lignes du fichier, une par une.
    									list($nom,  $prenom, $adresse, $bday, $mail, $mot_de_passe_crypte,  $liste, $sexe) = explode('|', $buffer);    
    									// Séparation des données de la ligne en cours en fonction du caractère "|".
    									$data = array('nom'=>$nom, 'prenom' => $prenom,'bday' => $bday, 'mail' => $mail,'mot_de_passe_crypte' => $mot_de_passe_crypte,                     'liste' =>$liste, 'sexe' =>$sexe); 
    									// Ajout d'un tableau dans notre tableau de données contenant le joueur et les prenom.
    														 // On définit un login et un mot de passe de base pour tester notre exemple. Cependant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site
    							 $data['nom'];
    							 $data['mot_de_passe_crypte'];
    							 // on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
    							 if (hash_equals($data['nom'] , $login) && hash_equals( $data['mot_de_passe_crypte'] , $pass_crypte)) 
    								{
    									// dans ce cas, tout est ok, on peut démarrer notre session
     
    								    // on la démarre :)
    									session_start ();
    									// on enregistre les paramètres de notre visiteur comme variables de session ($login et $pass) (notez bien que l'on utilise pas le $   pour enregistrer ces variables)
    									$_SESSION['login'] = $_POST['login'];
    									$_SESSION['pass_crypte'] = $pass_crypte;
     
    									// on redirige notre visiteur vers une page de notre section membre
    									header ('location: page_membre.php');
    								}
    							 else 
    								{
    									// Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait
    									echo '<body onLoad="alert(\'Membre non reconnu...\')">';
    									// puis on le redirige vers la page d'accueil
    									 echo '<meta http-equiv="refresh" content="0;URL=../acceuil.php">';
    								}
     
     
    								}
    								fclose($fileHandle);                    
    								// fermeture du fichier
    								} 
    				}								
    			else 
    				{
    					echo 'Le mot de passe est invalide.';
    				}
     
    		}
    	else 
    		{
    			echo 'Les variables du formulaire ne sont pas déclarées.';
    		}
     
     
     
     
     
    ?>

  16. #16
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                $pass=$_POST['pass'];
    			// on crypte le mot de passe
                $pass_crypte = password_hash($pass, PASSWORD_BCRYPT, $options);
                // on verifie le cryptage                             
    			if (password_verify($pass, $pass_crypte))
    Tu ne vois pas comme une erreur de conception ?

    A quel moment tu le compares aux mots de passe enregistrés dans le fichier ?

  17. #17
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    ben ici non ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     // on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
    if (hash_equals($data['nom'] , $login) && hash_equals( $data['mot_de_passe_crypte'] , $pass_crypte))
    car pour que les deux correspondent il faut que les deux soit crypter non ?

  18. #18
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    bon ... j'ai trouver l'erreur
    elle vient du hast du mdp de connexion et celui d inscription

    array(8) { ["nom"]=> string(2) "mr"["mot_de_passe_crypte"]=> string(60) "$2y$12$4YN.gMXeyjZTQ4DQBkOwLu7HPUmngHi5Ejql3JBQ/S6msAzco/Woy }
    string(2) "mr" string(60) "$2y$12$YPTg03nhNPJqvDz/qX0jFeLBMMCVsrLg17mkzIBOSL/fOQj3z2eVG" bool(true) bool(false)
    je comprend pas alors que c'est le meme encodage

    inscription :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $options = ['cost' => 12,];
    //on crypte le mot de passe
    $mot_de_passe_crypte = password_hash($_POST['mot_de_passe'], PASSWORD_BCRYPT, $options);
    connexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $options = ['cost' => 12,];
    $pass_crypte = password_hash($pass, PASSWORD_BCRYPT, $options);

  19. #19
    Invité
    Invité(e)
    Par défaut
    C'est pourquoi il faut utiliser password_verify().

    Tu devrais LIRE la doc. Et les exemples.
    Pas juste la parcourir en diagonale...

  20. #20
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                $pass_crypte = password_hash($pass, PASSWORD_BCRYPT, $options);
                // on verifie le cryptage                             
    			if (password_verify($pass, $pass_crypte)) 
    				{
    j'ai une vérification justement ....

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Juste une petite question..
    Par fatmart dans le forum ASP
    Réponses: 1
    Dernier message: 23/04/2008, 16h57
  2. [OpenOffice] [VBA] vba ==> open office : juste une petite ligne à traduire
    Par ickyknox dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 29/03/2008, 00h18
  3. Réponses: 1
    Dernier message: 27/09/2007, 14h24
  4. menu dynamique vertical (juste une petite question)
    Par cynthiavn dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/07/2007, 13h39
  5. juste une petite idiotie!
    Par Nemerle dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 28/10/2006, 23h18

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