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 d'authentification


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 27
    Points
    27
    Par défaut Code d'authentification
    Bonjour,
    J'ai un petit problème avec l'authentification du pseudo,
    j'ai écrit ce code mais il ne fonctionne pas je ne sais pas pourquoi, j'ai essayé de le corrigé mais pas résultat.
    Alors SVP pouvez vous m'aider à le corriger. Et merci
    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
     
     <?php 
     
     
     
    $db=mysql_connect("localhost","root","")or die("erreur de connecxion");
    mysql_select_db('ntp',$db) or die("erreur de connexion base");
    $q="select login,password from inscription";
     $z=mysql_query($q);
     
     while($res= mysql_fetch_row($z))
     {   $pseudo=$res[0];
        $password=$res[1];
     } 
    		while($_SESSION['pseudo']!=$pseudo and $_SESSION['password']!=$password)
    		{
    			if($_SESSION['pseudo']=='$password' and $_SESSION['password']=='$pseudo')
     
    			{	echo"vous êtes connécté sous le nom de "; echo $_SESSION['pseudo'];	}
     
     
    				else
    				{
    					echo"
    						<form method='post'>
    						<table>
    							<tr><td>Pseudo:</td></tr>
    							<tr><td><input type='text' name='pse' size='20'/></td></tr>
    							<tr><td>Mot de passe:</td></tr>
    							<tr><td><input type='password' name='pass' size='20'/></td>
    							</tr>
    							<tr><td><center><input type='submit' name='id' value='Envoyer' /></center></td></tr>
    						</table>
    						</form>";
    					if(isset($_POST['id']))
    					{
    					$_SESSION['pseudo']=$_POST['pse'];
    					$_SESSION['password']=$_POST['pass'];
    				    }
    				}
     
     
    		}
     
     
     
    		?>

  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
    Je ne vois pas de session_start().
    Mais sinon pourrais-tu être plus précis que "ca ne marche pas" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Je ne vois pas de session_start().
    Mais sinon pourrais-tu être plus précis que "ca ne marche pas" ?
    Merci pour ta réponse!!
    Pour la "session_start()" je l'ai mis en haut de la page avant ce code!!
    Le problème c qu'il ne voit pas la condition if il passe et exécute directement le else. Et lors de l'exécution il m'affiche les champs de saisie et lors de l'envoie il ne fait pas la vérification avec la base

    Et puis j'ai essayer de faire le boucle while pour qu'il revient et exécute le if mais aussi n'as pas fonctionné(il répète le else à l'infini)

  4. #4
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 456
    Points : 4 612
    Points
    4 612
    Par défaut
    salut,
    j'ai repere (a 1ere vue) plusieurs points :
    pour ton FROM : recuperes-tu les $_POST (surment oui)
    puis, ta requete sql :
    SELECT login,password FROM inscription
    ok, mais il n'y a pas de clause WHERE; ainsi, ta requete te retournera tous les enrregistrements.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $q="SELECT login,password FROM inscription WHERE login='".$_POST["pse"]."' AND password='".$_POST["pass"]."' "
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  5. #5
    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
    Les variables ne sont pas interpretées dans les guillemets simples et de toute facon tes guillemets ne servent à rien ici ... est ce que tu n'aurais pas de plus inversé pseudo et password ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($_SESSION['pseudo']== $pseudo AND $_SESSION['password']==$password)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($_SESSION['pseudo']== $pseudo AND $_SESSION['password']==$password)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $q="SELECT login,password FROM inscription WHERE login='".$_POST["pse"]."' AND password='".$_POST["pass"]."' "

    Merci encore pour les réponses, Pour ces 2 codes je l'ai essayé avant de poster le sujet sur le forum, vraiment j'ai pas trouvé de solution c pourquoi j'ai poser mon problème ici

  7. #7
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 456
    Points : 4 612
    Points
    4 612
    Par défaut
    Salut,
    je me sens d'humeur charritable ce matin ^^.
    Voici comment je procede pour tester un login (j'ai adapte pour toi en plus ^^).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $db=mysql_connect("localhost","root","") or die ("Erreur de connecxion Sql.");
    mysql_select_db('ntp',$db) or die ("Erreur de connexion base.");
    $q=mysql_query("SELECT password FROM inscription WHERE login='".$_POST["pse"]."' ") or die ("Probleme lors du log.");
    $row=mysql_fetch_array($q);
    if($row["password"] != $_POST["pass"])
    {
     echo 'Mauvais log/passe.<br />';
     exit("<a href=\"javascript:history.go(-1);\">Precedent</a>");
    }
    else
    {
     $_SESSION["pseudo"]=$_POST["pse"];
     //ect...
    }
    A supposer qu'il n'y ai pas de doublons sur le pseudo.
    Voila, j'espere que ca t'aidera.
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par DEMMOTTE Voir le message
    Salut,
    je me sens d'humeur charritable ce matin ^^.
    Voici comment je procede pour tester un login (j'ai adapte pour toi en plus ^^).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $db=mysql_connect("localhost","root","") or die ("Erreur de connecxion Sql.");
    mysql_select_db('ntp',$db) or die ("Erreur de connexion base.");
    $q=mysql_query("SELECT password FROM inscription WHERE login='".$_POST["pse"]."' ") or die ("Probleme lors du log.");
    $row=mysql_fetch_array($q);
    if($row["password"] != $_POST["pass"])
    {
     echo 'Mauvais log/passe.<br />';
     exit("<a href=\"javascript:history.go(-1);\">Precedent</a>");
    }
    else
    {
     $_SESSION["pseudo"]=$_POST["pse"];
     //ect...
    }
    A supposer qu'il n'y ai pas de doublons sur le pseudo.
    Voila, j'espere que ca t'aidera.

    Bon, j'ai essayé encore mais rien n'a changer.
    Je pense que je vais tout effacer et réécrire le code de nouveau.
    Et merci beaucoup pour votre aide

  9. #9
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 689
    Points : 5 280
    Points
    5 280
    Par défaut
    Bon, j'ai essayé encore mais rien n'a changer.
    Je pense que je vais tout effacer et réécrire le code de nouveau.
    Tu as repris tout le code que DEMMOTE t'a fourni ou tu as pris quelques lignes que tu as posé par ci par la ?

    A première vue (je ne l'ai pas testé) mais son code doit fonctionner parfaitement.

    C'est logique que seul ton esle soit executé
    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
    while($_SESSION['pseudo']!=$pseudo and $_SESSION['password']!=$password)
    		{
    			if($_SESSION['pseudo']=='$password' and $_SESSION['password']=='$pseudo')
     
    			{	echo"vous êtes connécté sous le nom de "; echo $_SESSION['pseudo'];	}
     
     
    				else
    				{
    					echo"
    						<form method='post'>
    						<table>
    							<tr><td>Pseudo:</td></tr>
    							<tr><td><input type='text' name='pse' size='20'/></td></tr>
    							<tr><td>Mot de passe:</td></tr>
    							<tr><td><input type='password' name='pass' size='20'/></td>
    							</tr>
    							<tr><td><center><input type='submit' name='id' value='Envoyer' /></center></td></tr>
    						</table>
    						</form>";
    					if(isset($_POST['id']))
    					{
    					$_SESSION['pseudo']=$_POST['pse'];
    					$_SESSION['password']=$_POST['pass'];
    				    }
    				}
     
     
    		}
    En clair, tu es en train de tester SI (IF) c'est le bon mot de passe et le bon login TANT QUE (WHILE) ce n'est pas le bon mot de passe et le bon login.

    De plus, cela ne sert à rien de tester tout les logins. Seul celui entré par l'utilisateut doit être vérifié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($res= mysql_fetch_row($z))
     {   $pseudo=$res[0];
        $password=$res[1];
     }
    Avec ceci tu ne prendra que le dernier pseudo et dernier pass retournés par ta requête. Ce bout de code n'a pas sa place d'ailleurs puisq'il faut tester uniqument le pseudo entré.

    En résumé pour que ça marche il faut :
    1) Rajouté une clause Where à ta requete pour ne récupérer que le mot de passe du pseudo entré
    2) Tester le nombre de ligne retourné par la requête (si celui-ci est égal à zéro cela signifie que le pseudo n'existe pas)
    3) Enlever tes deux boucles "while" qui te seront inutiles puisque normalement si tu as bien fait les choses le pseudo est unique.

Discussions similaires

  1. code d'authentification
    Par ajatm dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/03/2014, 15h39
  2. Aide pour comprendre un code d'authentification
    Par paladice dans le forum ASP.NET
    Réponses: 0
    Dernier message: 27/05/2013, 10h37
  3. [VB]Run As d'un code VB (authentification)
    Par zz2f3 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 16/09/2009, 10h40
  4. Besoin d'un code source d'authentification
    Par sibboo dans le forum Langage
    Réponses: 1
    Dernier message: 23/05/2008, 11h55
  5. Réponses: 16
    Dernier message: 18/10/2006, 22h52

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