Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/03/2006, 11h53   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 70
Points : 12
Points : 12
Par défaut pb parcours tableau 2d

Bonjour!

Je rencontre un probléme pr retrouver deux valeurs ds un tableau 2dimensions:

je dispose de deux valeurs récupérées ds un formulaire : $user et $pass.
A partir d'un fichier texte (login.txt), j'extrais un tableau 2dimension recapitulant l'ensemble des user et de leurs mot de passe.
je n'arrive pas a retrouver les valeurs de $user et $pass ds le tableau.

Voici mon code:

Code :
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
<?php 
 
$user = $_POST'username']; 
$pass = $_POST['password']; 
 
$fic = fopen("login.txt", "r");  
 
$i=0;                                    
if(!$fic)
{ 
               echo ("problème lors de l'ouverture du fichier"); 
 } 
else
{ 
	while (!feof($fic))
	{
		$ligne = fgets ($fic, 4096);
		list($login, $mdp)=explode("|", $ligne);
		$i++; 
		$tab[$i]['login']=$login; 			                $tab[$i]['mdp']=$mdp; 
	} 
} 
 
foreach ($tab as $user)
{ 
                if ($user["login"] == $user && $user["mdp"] == $pass)
	{ 
	                 echo "Connexion"; 
		 break; 
	}
} 
 
fclose ($fic); 
?>
Merci d'avance pour votre aide!!!
baillador est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 12h08   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Ton fichier est au format :

Code :
1
2
3
user 1|password 1\r\n
user 2|password 2\r\n
...
Qd tu récupères les lignes et que tu fais un explode( ) tu te retrouves dans ton tableau avec :

Code :
1
2
3
4
5
[0]['login'] = user 1
[0]['mdp'] = password 1\r\n
[1]['login'] = user 2
[1]['mdp'] = password 2\r\n
...
=> Tu as logiquement choppé les retours à la ligne au moment du explode( )
=> Les mots de passe ne collent jamais
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 12h15   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 70
Points : 12
Points : 12
non le tableau n'a pas l'air mal fouttu :qd je teste avec:

il m'affiche:

Citation:
Array ( [1] => Array ( [login] => ds [mdp] => ds ) [2] => Array ( [login] => dj [mdp] => dj ) )
je ne suis pas sure que le probléme vienne de la![/quote]
baillador est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 12h20   #4
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Sur une page HTML les \r\n n'apparaîtront pas avec un simple print_r( ).

Test rapide :

Code :
$ligne = rtrim(fgets($fic, 4096));
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 13h30   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 70
Points : 12
Points : 12
Ca ne marche tjs pas, meme avec la fonction rtrim...
baillador est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 14h52   #6
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Ah truc tout con, dans ton foreach( ) tu fais :

Code :
foreach ( $tab as $user ) {
Le as $user écrase le $user auquel tu as affecté $_POST['username'] en début de script (instruction sans aucun intérêt d'ailleurs).
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 14h54   #7
Membre confirmé
 
Inscription : février 2003
Messages : 285
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 285
Points : 255
Points : 255
Envoyer un message via ICQ à Sion_Sempai Envoyer un message via MSN à Sion_Sempai Envoyer un message via Yahoo à Sion_Sempai


J'y ai réfléchi pendant bien 30 minutes et j'ai meme pas fait gaffe a cette erreur toute bête
Sion_Sempai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 15h45   #8
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 70
Points : 12
Points : 12
j'y planche depuis ce matin, grace a vos remarque j'ai modifier mon code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
$var = False;
foreach ($tab as $log)
{
       if ((strcmp(rtrim($user), rtrim($log['login'])) == 0) && (strcmp(rtrim($pass), rtrim($log['mdp'])) == 0))
      {  
	$var = True;                                   
       }
} 
if ($var == True)
{
       echo "connexion";
}
else
{
      echo "incorrect";
}
lorsque je "zappe" la deuxiéme partie de la condition du 1er if (aprés le &&) ca marche.
Lorsque j'affiche le contenu de $pass et $log ['pass'] les deux variable retourne bien ce qu'elles doivent retourner!
Mais avec les deux conditions jointes par le && ca ne marche plus.
Une idée??????

merci pour votre aide!!!!
baillador est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 15h56   #9
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Pourquoi faire simple qd on peut faire compliqué ?
C'est ton crédo ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
    $fic = fopen("login.txt", "r");
 
    $ok = FALSE ;
    while ( ! feof($fic) ) {
        $ligne = fgets($fic, 4096) ;
        $ligne = rtrim($ligne) ; // On vire le retour à la ligne
        list($login, $mdp) = explode("|", $ligne);
 
        if ( $login == $_POST['user'] && $mdp == $_POST['pass'] ) {
            $ok = TRUE ;
            break ;
        }
    }
    fclose($fic) ;
 
    echo $ok ? 'Connecté' : 'Pas connecté' ;
?>
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 16h06   #10
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 70
Points : 12
Points : 12
dsl je suis débutante en php, et j'avoue que je galére un peu... g testé ton script il me fait les meme erreurs que le mien (qui est certe bcp bcp plus compliqué)
baillador est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 16h11   #11
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
lol, bon on va faire un exemple fonctionnel :

login.txt
Code :
1
2
3
4
rené|azerty
robert|qsdf
sebastien|mypass
marthe|youki
auth.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
    $fic = fopen("login.txt", "r");
 
    // Simule un formulaire
    $_POST['user'] = 'sebastien' ;
    $_POST['pass'] = 'mypass' ;
 
    $ok = FALSE ;
    while ( ! feof($fic) ) {
        $ligne = fgets($fic, 4096) ;
        $ligne = rtrim($ligne) ; // On vire le retour à la ligne
        list($login, $mdp) = explode("|", $ligne);
        if ( $login == $_POST['user'] && $mdp == $_POST['pass'] ) {
            $ok = TRUE ;
            break ;
        }
    }
    fclose($fic) ;
 
    echo $ok ? 'Connecté' : 'Pas connecté' ;
?>
Avec ce script tu devrais obtenir "Connecté", si tu changes le login et/ou le mdp "Non connecté".
Chez moi ça fonctionne bien.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 16h14   #12
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 70
Points : 12
Points : 12
arfffff pkoi ca marche pas chez moiiiiii !!!!!!!
baillador est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 16h16   #13
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Citation:
Envoyé par baillador
arfffff pkoi ca marche pas chez moiiiiii !!!!!!!
Quelles sont les erreurs ? Quel est ton environnement de travail ?
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 16h17   #14
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 70
Points : 12
Points : 12
ben ca m'affiche "pas connecté" pourtant g verifié 2fois, le log et le pass sont correct ds le fichier.
baillador est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 16h19   #15
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Citation:
Envoyé par baillador
ben ca m'affiche "pas connecté" pourtant g verifié 2fois, le log et le pass sont correct ds le fichier.
T'as testé avec le fichier login.txt que je t'ai filé ?
Quel est ton env de travail ?
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2006, 16h20   #16
Candidat au titre de Membre du Club
 
Inscription : mai 2005
Messages : 70
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 70
Points : 12
Points : 12
je viens de tester avec ton fichier ca marche!
je ne comprends pas pourquoi ca ne marchait pas avec le mien.
Je te remercie bcp pour toute l'aide que tu m'as apporté aujourd'hui!!!!
Merci!!!!!
baillador est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h01.


 
 
 
 
Partenaires

Hébergement Web