PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 09-06-2010 10:14:03

tanja
Membre
Inscription : 09-06-2010
Messages : 18

verification couple login/mot de passe

Bonjour,

je suis débutante en PHP et je bute sur un problème qui doit être bien simple à réaliser mais dont je ne trouve pas la solution :

-je dois vérifier le couple login/mot de passe. Ces derniers sont enregistrés dans un doc au format txt.
Mon problème est le suivant : quand je teste ce code il ne prend en compte que la 1ere ligne du document il n'y a donc qu'un seul utilisateur qui peut s'enregistrer, embêtant, non ?

voici mon code :


// récupération des données
$login = (isset($_POST['login']))? $_POST['login']:"";
$pass = (isset($_POST['pass']))? $_POST['pass']:"";

if(!empty($pass) && !empty($login)) {checkPass($login,$pass);} // verification du couple login pass en provenance du fichier

function checkPass($login,$pass) {
 
    $tab = file("passwd.txt");
   
    foreach($tab as $val){
    list($l,$p)= explode("::",$val);
   
    if(strtolower(trim($l)) == strtolower($login) && strtolower(trim($p)) == strtolower($pass))
      {
      echo "bienvenue";
      return true;
      $_SESSION['isPassValid'] = true; // initialisation de la variable de session   
      }
      else {echo "Le login et / ou le mot de passe ne sont pas corrects";
          return false;} 
      }
      }    
?>
 

dans le fichier texte les couples sont écrits :
login::pass
login::pass
etc...
pourquoi le foreach ne parcoure -t-il pas toutes les lignes du tableau ?
merci d'avance,
Inès

Hors ligne

#2 09-06-2010 10:30:20

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : verification couple login/mot de passe

Bonjour Inés !!!

Comme aujourd'hui, je suis de bonne humeur big_smile, je vais "moi-même" éditer ton post pour mettre les balises... sinon c'était fermeture de ton sujet.

P.S : pourquoi ne pas passer par un Array ???


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#3 09-06-2010 11:29:14

tanja
Membre
Inscription : 09-06-2010
Messages : 18

Re : verification couple login/mot de passe

Bonjour,

merci pour la bonne humeur !!!! 
désolé

etant donné que j'ouvre mon fichier texte avec file() le contenu est automatiquement mis dans un tableau , non ?

Inès

Hors ligne

#4 09-06-2010 12:00:50

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : verification couple login/mot de passe

Saluton,
Dans ta boucle foreach $val est l'index de chaque ligne et non la valeur.
Il te faut utiliser la syntaxe foreach complète

foreach($tab  as $cle=>$val)

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 09-06-2010 12:59:39

tanja
Membre
Inscription : 09-06-2010
Messages : 18

Re : verification couple login/mot de passe

Salut !
merci mais ça ne marche toujours pas :-(

Inès

Hors ligne

#6 09-06-2010 13:10:52

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : verification couple login/mot de passe

un petit point de detail qui devrai changer pas mal de chose wink


[code : php]
function checkPass($login,$pass) {

    $tab = file("passwd.txt");
    $tmp=false;
    foreach($tab as $val){
            list($l,$p)= explode("::",$val);
            if(strtolower(trim($l)) == strtolower($login) && strtolower(trim($p)) == strtolower($pass))  {
                   echo "bienvenue";
                   $tmp= true;
                   $_SESSION['isPassValid'] = true; // initialisation de la variable de session   
            }
            else
            {
                  echo "Le login et / ou le mot de passe ne sont pas corrects";
                  $tmp= false;
            }
    }
    return $tmp;
}   

[/code]


a++

Hors ligne

#7 09-06-2010 14:07:16

tanja
Membre
Inscription : 09-06-2010
Messages : 18

Re : verification couple login/mot de passe

merci,

mais maintenant le script m'affiche le message d'erreur et le message de bienvenue en même temps !! et l'ordre d'affichage diffère en fonction de la position du couple login/pass dans le fichier txt.

par ailleurs je ne comprends pas bien à quoi correspond cette variable $tmp ?

Inès

Hors ligne

#8 09-06-2010 14:32:42

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : verification couple login/mot de passe

>>par ailleurs je ne comprends pas bien à quoi correspond cette variable $tmp ?


je te met sur la voie wink

tel que tu avais écrit ta fonction,  $_SESSION['isPassValid'] = true n'était jamais appelé wink

a++

Hors ligne

#9 09-06-2010 14:46:37

tanja
Membre
Inscription : 09-06-2010
Messages : 18

Re : verification couple login/mot de passe

bon il faut que je me replonge dans les sessions alors !!

sinon que puis-je faire pour mon souci d'affichage ?

merci !

Hors ligne

#10 09-06-2010 21:10:24

tanja
Membre
Inscription : 09-06-2010
Messages : 18

Re : verification couple login/mot de passe

pas de solution à mon problème ? sad(((

Hors ligne

#11 09-06-2010 21:31:24

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : verification couple login/mot de passe

function checkPass($login,$pass) {
 
    $tab = file("passwd.txt");
    $tmp=false;
    foreach($tab as $val){
            list($l,$p)= explode("::",$val);
            if(strtolower(trim($l)) == strtolower($login) && strtolower(trim($p)) == strtolower($pass) && $tmp == false)  {
                   echo "bienvenue";
                   $tmp= true;
                   $_SESSION['isPassValid'] = true; // initialisation de la variable de session  
            }
    }
    if( $tmp == false )
    {
       echo "Le login et / ou le mot de passe ne sont pas corrects";
    }
    return $tmp;
}  

Voilà une correction du code de Pierrot avec un seul affichage du message correspondant.

Hors ligne

#12 10-06-2010 10:54:26

tanja
Membre
Inscription : 09-06-2010
Messages : 18

Re : verification couple login/mot de passe

merci beaucoup pour le code mais il y a toujours un problème !
dans mon fichier "passwd.txt" j'ai plusieurs couple login/pass et le code n'accepte l'entrée qu'au 1er couple inscrit et non aux suivants ! retour à la case départ !
a++
Inès

Hors ligne

#13 10-06-2010 11:24:10

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : verification couple login/mot de passe

Cours de debugage pour comprendre ce qui ne va pas alors. ^^

function checkPass($login,$pass) {
 
    $tab = file("passwd.txt");
    echo"<pre>";print_r($tab);echo"</pre>"; // notre soit-disant tableau
    $tmp=false;
    foreach($tab as $val){
            echo $val; // Nos soit disant lignes
            list($l,$p)= explode("::",$val);
            echo " => ".$l." et ".$p."<br />"; // l'interprétation
            if(strtolower(trim($l)) == strtolower($login) && strtolower(trim($p)) == strtolower($pass) && $tmp == false)  {
                   echo "bienvenue";
                   $tmp= true;
                   $_SESSION['isPassValid'] = true; // initialisation de la variable de session  
            }
    }
    if( $tmp == false )
    {
       echo "Le login et / ou le mot de passe ne sont pas corrects";
    }
    return $tmp;
}  

Avec ceci tu auras ce qui est réellement récupéré et ce qui est interprété.

Hors ligne

#14 10-06-2010 11:54:20

tanja
Membre
Inscription : 09-06-2010
Messages : 18

Re : verification couple login/mot de passe

Encore merci
le problème vient donc du list !
lors du 1er affichage du tableau j'ai bien mes 3 couples login/pass
mais lors du 2nd affichage après le list($l,$p) = explode......
j'en ai deux qui sont passés à la trappe ! le problème vient donc peut être de mon fichier 'passwd.txt' j'y ai inscrit les couples comme ceci :
florent::flo
mathieu::mash
.....
est ce que c'est le retour à la ligne qu'il ne lit pas ?

Hors ligne

#15 10-06-2010 12:20:27

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : verification couple login/mot de passe

Saluton,
Je pense que tu devrais remplacer le echo $val par print_r($val), pour t'assurer de ce que retourne foreach, car je persiste à penser que tu n'utilises pas la bonne syntaxe.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#16 10-06-2010 12:44:32

tanja
Membre
Inscription : 09-06-2010
Messages : 18

Re : verification couple login/mot de passe

ça ne change rien à l'affichage, il n'y a toujours que la 1ere ligne d'affichée:(

Hors ligne

#17 10-06-2010 13:24:04

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : verification couple login/mot de passe

Et que donne un print_r($tab) avant ta boucle foreach


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#18 10-06-2010 13:40:35

tanja
Membre
Inscription : 09-06-2010
Messages : 18

Re : verification couple login/mot de passe

Avec


foreach($tab as $key=>$val){   
  echo"<pre>";print_r($tab);echo"</pre>";
    list($l,$p)= explode("::",$val);
     echo " => ".$l." et ".$p."<br />";
 

ça me donne:
Array
(
    [0] => florent::flo

    [1] => mathieu::mash

    [2] => ines::tanger
)

=> florent et flo

Hors ligne

#19 10-06-2010 15:00:04

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : verification couple login/mot de passe

Plop,

Désolé de te décevoir Majuna chéri, mais la syntaxe du foreach version courte, existe bien smile

Il y a deux syntaxes possibles : la seconde est une extension mineure mais pratique de la première.

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

Pour en revenir au sujet, un code comme ca fait quoi ?

function checkPass($login,$pass) {
 
    $tab = file("passwd.txt");
    echo"<pre>";print_r($tab);echo"</pre>"; // notre soit-disant tableau
    $tmp=false;
    foreach($tab as $val){
            echo $val; // Nos soit disant lignes
    }
    if( $tmp == false )
    {
       echo "Le login et / ou le mot de passe ne sont pas corrects";
    }
    return $tmp;
}  

(oui je sais, ca va retourner false, mais au moins ca permettra de situer un peu mieux le problème smile

@+


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#20 10-06-2010 15:13:02

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : verification couple login/mot de passe

Un truc qui m'échappe c'est la logique de ça

            if((strtolower(trim($l)) == strtolower($login))
                && (strtolower(trim($p)) == strtolower($pass))
                && ($tmp == false)){
                   echo "bienvenue";
                   $tmp=true;
                   $_SESSION['isPassValid'] = true; // initialisation de la variable de session  
                }

Pourquoi y tester ($tmp == false) ???


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#21 10-06-2010 15:13:56

tanja
Membre
Inscription : 09-06-2010
Messages : 18

Re : verification couple login/mot de passe

Bonjour,

ça ne m'affiche donc que la 1ere ligne : florent::flo

merci

Hors ligne

#22 10-06-2010 15:22:11

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : verification couple login/mot de passe

ManicoW a écrit :

Plop,

Désolé de te décevoir Maljuna chéri, mais la syntaxe du foreach version courte, existe bien smile

Il y a deux syntaxes possibles : la seconde est une extension mineure mais pratique de la première.

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

Il est vrai que je ne me sers quasiment jamais de tableaux autres qu'associatifs, donc cette syntaxe courte me dérange toujours puisqu'un item de tableau est toujours associé à un index (numérique ou autre).


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#23 10-06-2010 16:03:55

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : verification couple login/mot de passe

Je viens de tester avec un environnement Mov'Amp, j'obtiens bien les trois items.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#24 10-06-2010 16:09:34

tanja
Membre
Inscription : 09-06-2010
Messages : 18

Re : verification couple login/mot de passe

????? désolé mais je débute alors c'est quoi un environnement Mov'Amp ?
j'ai simplement testé sous firefox !

Hors ligne

#25 10-06-2010 16:12:30

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : verification couple login/mot de passe

C'est Apache Mysql PHP installés sur une clef USB, je n'ai pas d'autre moyen de tester ici au bureau.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums