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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    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
    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 confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    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 éprouvé 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
    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 confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    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 confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    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 éprouvé 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
    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'
    ?>

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

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