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 :

Lire et comparer une valeur dans un fichier avec données form


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut Lire et comparer une valeur dans un fichier avec données form
    Bonjour chers zéros,

    Débutant en php5 et zend,
    j'essaie via un formulaire ayant 2 champs, login et mot de passe.
    j'ai donc préféré faire un bout de script en php4.
    Le problème c'est qu'il ne se passe rien.

    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
    $username = $this->_request->getPost('username');	
    $password = $this->_request->getPost('password');
    $auth = false; 
     
    $annuaire = fopen('../application/configs/confsecours.txt', 'r'); //ouverture d'un fichier en lecture
    $i=0;
    if (!isset($_POST['valider'])) {
     
    	while($i < $ligne=fgets($annuaire,100)){
    	     $tab=explode(":",$ligne);
     
    	      if (($tab[0] = $_POST['username']) && ($tab[1] = $_POST['password'])){
    	          echo "connecté";
    	          $auth = true; 
                  }
    	      else{
    		    echo "inconnu";
    	      }
    	      $i++;	 
    	      echo "$tab[0]";
    	      echo "$tab[1]";	
    		}
    	      fclose($annuaire); 
    		}

    Pourriez vous m'aider s'il vous plaît ?
    Merci d'avance.
    Cordialement

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    a priori tu as déjà une erreur dans tes tests, tu fais une assignation au lieu d'une comparaison :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tab[0] = $_POST['username']
     
    =>
     
    $tab[0] === $_POST['username']

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut pb affichage continuel de mes messages: matching défaillant
    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
    $username = $this->_request->getPost('username');	
    				$password = $this->_request->getPost('password');
    				$auth = false; 
     
                   $annuaire = fopen('../application/configs/confsecours.txt', 'r'); //ouverture d'un fichier en lecture
    				$i=0;
    				if (isset($_POST['valider'])){
    					if($annuaire){
     
    						$total = count($annuaire); // Nombre total des lignes du fichier
    						$ligne=fgets($annuaire,100);
    						$tab=explode(":",$ligne);
    						for($i = 0; $i < $total; $i++) 
    						{ // Départ de la boucle
    								if (($tab[0] = $username) && ($tab[1] = $password)){
    								echo "$tab[0]";
    								echo "$tab[1]";	
    								$auth =true;
    								echo "authentification r&eacuteussie";
     
    								}
    						} // Fin de la boucle
    					}
    				fclose($annuaire);
    				}

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut
    bonjour Djakisback,
    tout d'abord merci de ton attention.

    ah j'ai pas fait attention .
    je vais tester.
    Je reviens

  5. #5
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Pourquoi deux fois le même code ?

    Après modif, ça donne quoi ?

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut
    Bonjour Fench,
    lol
    bah euh....

    En fait cela reste sur le message "authentification échoué", même après avoir rentrer les bons login et mot de passe.

    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
     
     
    $username = $this->_request->getPost('username');	
    				$password = $this->_request->getPost('password');
    				$auth = false; 
     
                   $annuaire = fopen('../application/configs/confsecours.txt', 'r'); //ouverture d'un fichier en lecture
    				$i=0;
    				if (isset($_POST['valider'])){
    					if($annuaire){
    						$total = count($annuaire); // Nombre total des lignes du fichier
    						$ligne=fgets($annuaire,1000);
    						$tab=explode(":",$ligne);
    						for($i = 0; $i < $total; $i++) 
    						{ // Départ de la boucle
    								if (($tab[0] === $username) && ($tab[1] === $password)){
    									echo "$tab[0]";
    									echo "$tab[1]";	
    									$auth =true;
    									echo "authentification r&eacuteussie";
    								}
    								else{
    									echo "authentification &eacutechou&eacutee, veuillez recommencer";
    									$auth =false;
    								}
    						} // Fin de la boucle
    					}
    				fclose($annuaire);
    				}
     
    merci d'avance pour votre aide, c'est vraiment très aimable.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut
    Bah en fait cela fonctionne,

    j'ai modifié le nombre de caractères par ligne puisque ils font tous la même taille lol.
    Merci infiniment pour vos réponses.

    Après je sais pas comment mettre que le problème est résolu.

    Merci pour tout et bonne continuation à tous.

    Cordialement.

  8. #8
    Rédacteur

    Avatar de Torgar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 334
    Points : 8 040
    Points
    8 040
    Par défaut
    Salut,

    Pour mettre en résolu, clique sur le bouton en bas de cette page.

    Merci.

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut pb comptage de ligne fichier
    En fait cela fonctionne pas comme je le voudrais.

    il me compte 1 seule ligne alors que la j'ai testé avec 4 lignes.

    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
     
     
    $username = $this->_request->getPost('username');	
    				$password = $this->_request->getPost('password');
    				$auth = false; 
    				$md5pass = md5($password);
     
                   $annuaire = fopen('../application/configs/confsecours.txt', 'r'); //ouverture d'un fichier en lecture
     
    				if (isset($_POST['valider'])){
    					if($annuaire){
    						$total = count($annuaire); // Nombre total des lignes du fichier
    						echo $total;
    						$ligne=fgets($annuaire,42);
    						$tab=explode(":",$ligne);
     
    						for($i = 0; $i < $total; $i++) 
    						{ // Départ de la boucle
    								if (($tab[0] === $username) && ($tab[1] === $md5pass)){
    									echo "$tab[0]";
    									echo "$tab[1]";	
    									$auth =true;
    									echo "authentification r&eacuteussie";
    								}
    								else{
    									echo "authentification &eacutechou&eacutee, veuillez recommencer";
    									$auth =false;
    								}
    						echo $total;	
    						} // Fin de la boucle
    					}
    				fclose($annuaire);
    				}
    Merci d'avance pour votre aide.

  10. #10
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    il faut que tu fasses une boucle en appelant fgets() tant qu'il y a quelque chose à lire dans le fichier donc tu peux virer ton for et tout faire dans un while, c'est plus conventionnel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $total = 0;
    while (($ligne = fgets($handle, 42)) !== false) {
    $total++;
    ...
    D'autre part, attention tu ouvres ton fichier même si le formulaire a été posté alors que tu ne le fermes que s'il a été posté.

    Sinon jamais testé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $total = count($annuaire); // Nombre total des lignes du fichier
    mais je ne pense pas que ça te retourne le résultat escompté.

    Edit : je vais développer un peu parce que là t'es un peu mal parti tu n'as pas besoin de parcourir tout le fichier, tu peux t'arrêter en cas de succès :

    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
    $total = 0;
    $auth = false;
    while (($ligne = fgets($handle, 42)) !== false) {
    	$total++;
    	$tab = explode(":",$ligne);
    	if (($tab[0] === $username) && ($tab[1] === $md5pass)){
    		$auth =true;
    		break;
    	}
    }
     
    if($auth) {
    	echo "ok";
    }
    else {
    	echo "pas ok";
    }

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut
    merci infiniment Djakisback, en plus avec les explications.


    Merci pour tout.
    Et merci à tous ceux qui ont répondu.
    Bonne continuation à tous.

    Cordialement,

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

Discussions similaires

  1. Modifier une valeur dans un fichier xml
    Par arthrax dans le forum VBScript
    Réponses: 3
    Dernier message: 03/04/2007, 09h46
  2. [XSLT] Tester la non présence d'une valeur dans un fichier
    Par arnauann dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/01/2007, 15h29
  3. Réponses: 6
    Dernier message: 30/11/2006, 18h15
  4. Modifier une valeur dans un fichier sans passer par l'éditeur
    Par elkhy dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/06/2006, 00h15
  5. [D6] Recherche d'une valeur dans un fichier
    Par Lung dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 08h26

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