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 :

[Tableaux] [Débutant] Autentification HTTP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 59
    Points
    59
    Par défaut [Tableaux] [Débutant] Autentification HTTP
    Bonjour!

    Voici que je suis confronté à un nouveau probléme, avec l'autentification HTTP. En effet, j'ai ecrit le code suivant, mais quand j'ai commencé à tester, seul un des profils inscrits dans la base de données arrivait à s'identifier normalement, l'autre apparaissant comme "Identifiant non trouvé" alors que je sais qu'il se trouve dans la base de données! De plus, quand j'ai modifié le code pour vérifier si le probléme venait de la requête sql, il devait executer la requete SQL, retourner le resultat et l'afficher, et la ça marchait, tous les identifiants/mdp du tableau etaient affichés. Mais pour s'identifier, ça ne marche pas.

    Peut-être ça vient du code? Merci d'avance pour votre aide.

    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
    <?php
     
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        header("WWW-Authenticate: Basic realm=\"My Realm\"");
        header("HTTP/1.0 401 Unauthorized");
        echo "Identification annulée";
        exit;
      } else {
      if ($usernom == $_SERVER['PHP_AUTH_USER'] ) {          
          if($usermdp == $_SERVER['PHP_AUTH_PW'] )   {      
          echo "Hello"    ;
          echo $usernom      ;
      } else { 
             echo "Mot de passe incorrect" ;
      }
      }
        else {
            echo "Identifiant non trouvé"  ;
        }
      }
     
     
      $requete = "SELECT * FROM fba" ;
    $serveur = "mysql" ;
    $utilisateur = "user" ;
    $passe = "mdp" ;
    $base = "base" ;
    @MySQL_connect($serveur, $utilisateur, $passe) or die("Echec de connexion au serveur") ;
    @mysql_select_db($base) or die("Echec de sélection de la base") ;
     
    if($resultat = mysql_query($requete)) {      
    while($ligne = mysql_fetch_array($resultat)) {  
        $usernom = $ligne["nom"] ;
        $usermdp = $ligne["mdp"]  ;     
    }  
    } else {
        echo "Erreur de requête de la base de données." ;
        }
    ?>

  2. #2
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    J'avoue que je n'ai pas bien saisi comment tu pratiquais ton identification..

    Par contre je comprends encore moins ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if($resultat = mysql_query($requete)) {      
    while($ligne = mysql_fetch_array($resultat)) {  
        $usernom = $ligne["nom"] ;
        $usermdp = $ligne["mdp"]  ;     
    }
    Tu as un select * from ta table juste au dessus et tu parcours tous tes enregistrements pour les écraser à chaque tour de boucle, quel est l'intérêt ?
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  3. #3
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Un peu bizarre ce script.

    La première partie semble correcte mais je ne vois pas comment tu peux valider les users si la variable $usernom n'est pas renseigné

    Dans la deuxième partie, comme l'a dit guitou12, ce code ne fait pas grand chose d'utile car les users s'ecrasent les uns après les autres donc seul le dernier user se retouve dans les variables

    A mon avis tu ne nous a pas donné le script complet
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 59
    Points
    59
    Par défaut
    Ben oui, justement, mon probléme c'est que je ne sais pas comment faire pour que les users ne s'ecrasent pas, et que n'importe quel user puisse être identifié, pas juste le dernier....

    Pour l'identification, c'est l'identification HTTP.

  5. #5
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Quand tu recup le nom de les infos de l'utilisateur via $_SERVER['PHP_AUTH_ , c'est a ce moment là que tu dois faire la requete en spécifiant la clause Where qui va bien ( user, mdp )

    Cela me parait plus logique
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Points : 59
    Points
    59
    Par défaut
    Ok, merci, j'ai fait les modifications nécessaires.
    J'ai donc remanié le script, voilà ce que ça donne maintenant:

    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
    <?php
     
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        header("WWW-Authenticate: Basic realm=\"My Realm\"");
        header("HTTP/1.0 401 Unauthorized");
        echo "Identification annulée";
        exit;
      } else {
      $SERVER['PHP_AUTH_USER'] = $usernom   ;
      $SERVER['PHP_AUT_PW'] = $usermdp  ;
      }
     
      $requete = "SELECT * FROM fba WHERE nom = ".$usernom ;
    $serveur = "sql" ;
    $utilisateur = "user" ;
    $passe = "pw" ;
    $base = "data" ;
    @MySQL_connect($serveur, $utilisateur, $passe) or die("Echec de connexion au serveur") ;
    @mysql_select_db($base) or die("Echec de sélection de la base") ;
     
    if($resultat = mysql_query($requete)) {      
    $ligne = mysql_fetch_array($resultat) ;
        $nom = $ligne["nom"] ;
        $mdp = $ligne["mdp"]  ;  
        if($nom != $usernom) {
        echo "Identifiant non trouvé"     ;
        exit ;   
        } elseif($mdp != $usermdp) {
            echo "Mot de passe incorrect"  ;
            exit ;
        } else {
            echo "Bienvenue, ".$nom."!" ;
            echo "Ton mot de passe est :".$mdp;
    } 
    } else {
        echo "Erreur de requête de la base de données." ;
        }
    ?>
    Y-a-t-il encore des erreurs?

    Merci pour votre aide!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/07/2006, 14h52
  2. [Probleme] tri croissant - tableaux (débutant)
    Par tarnak dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/07/2006, 21h01
  3. [Tableaux] débutant : supprimer ligne tableau
    Par samplaid dans le forum Langage
    Réponses: 2
    Dernier message: 27/03/2006, 10h39
  4. [Tableaux] [Débutant ) Classes
    Par Halobox dans le forum Langage
    Réponses: 5
    Dernier message: 12/01/2006, 15h50
  5. Réponses: 4
    Dernier message: 11/10/2005, 14h46

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