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

PHP & Base de données Discussion :

Erreur de script d'authentification


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut Erreur de script d'authentification
    Bonjour,

    j'ai un petit soucis avec un script pour se logguer:

    Fatal error: Call to undefined function db_num_rows() in /var/www/test/test_login.php on line 21
    il y a juste 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
            include( "test_login.php" );
     
            if (!$auth) {
                    header( 'WWW-Authenticate: Basic realm="de la Base d\'Utilisateurs autorises"');
                    header( 'HTTP/1.0 401 Unauthorized' );
                    PRINT "Access Denied.";
            }
            else {
            header("Location: test_login_page.php");
            }
    ?>
    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
    <?php
            $auth = false;
            if ((isset($_SERVER["PHP_AUTH_USER"])) && (isset($_SERVER["PHP_AUTH_PW"]))) {
                    $bddlink=connect();
                    $md5_pwd = md5($_SERVER["PHP_AUTH_PW"]);
                    $user_login = $_SERVER["PHP_AUTH_USER"];
                    #-------------
                    $sqlquery = "SELECT *
                                            FROM users
                                            WHERE username = '$user_login'
                                            AND password = '$md5_pwd'";
                    /*echo $sqlquery;*/
                    $result = mysql_query($sqlquery,$bddlink) or die (mysql_error($bddlink));
                    $num = db_num_rows( $result );
                    if ($num == 1) {
                    /*if ($result == 1) {*/
                                    $auth = true;
                    }
            }
            function connect(){
            $dbhost="localhost";
            $dbuser="toto";
            $dbpass="toto";
            $dblink=mysql_connect($dbhost,$dbuser,$dbpass);
            mysql_select_db("test",$dblink);
            return $dblink;
            }
    ?>
    dans ma base de donnée, il n'y a que 3 champs: "id, username et password"

    Merci d'avance de vos retours.

    ps: et si je voudrais ajouter en plus un autre champs (par exemple " groupe") et dire que si en plus de l'identification, oui ou non il appartient à ce groupe, il pourrait aller vers tel ou tel lien en plus...
    c'est simple à faire?

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations forums :
    Inscription : Avril 2003
    Messages : 50
    Par défaut
    Salut
    - Essaie la methode 'mysql_num_rows()' voir.
    - Gerer un champ groupe de la table utilisateur n'est pas complique.
    • Je suppose que tu peux ajouter le champ groupe dans la base de donnees
    • Je suppose aussi que tu renseignes le champ a l'ajout de l'utilisateur
    • Maintenant la requete de controle sera du genre
      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
       
      $sqlquery = "SELECT groupe FROM users WHERE username = '$user_login'
      AND password = '$md5_pwd'";
       
      // mysql_query , mysql_num.... 
      // $res est le resultat de la requete mysql
       $groupe = $res['groupe'];
       
      // Orientations ou diverses actions suivant le groupe
       
      switch ($groupe) {
          case 'admin': //action pour admin ;
              break;
          ....
      }


    J'ai brule les etapes que je suppose minimes mais tu peux toujours revenir pour plus de deails.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 3
    Par défaut
    Merci!

    Dans le cas des "groupes", si toto appartient au groupe A, alors cetrains liens lui sont présentés, si B, alors d'autres...

    comment peuvent être présentérd les 2 pages "login.php" et "index.php"?

    index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
            include( "login.php" );
     
            if (!$auth) {
                    header( 'WWW-Authenticate: Basic realm="Base d\'Utilisateurs autorises"');
                    header( 'HTTP/1.0 401 Unauthorized' );
                    PRINT "Access Denied.";
            }
            else {
            $var;
            header ($var);
            }
    ?>
    login.php :

    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
            $auth = false; 
            if ((isset($_SERVER["PHP_AUTH_USER"])) && (isset($_SERVER["PHP_AUTH_PW"]))) {
                    $bddlink=connect();
                    $md5_pwd = md5($_SERVER["PHP_AUTH_PW"]);
                    $user_login = $_SERVER["PHP_AUTH_USER"];
     
            // Gestion de groupe 
     
            $sqlquery = "SELECT Groupe 
                                    FROM users 
                                    WHERE username = '$user_login'
                                    AND password = '$md5_pwd'";
            $result = mysql_query($sqlquery,$bddlink) or die (mysql_error($bddlink));
            $groupe = $result['Groupe'];
     
            // Orientations ou diverses actions suivant le groupe
     
            switch ($groupe) {
                case 'admin':
                     lien A
                     lien B
                    break;
                 case 'user':
                    lien B
                    lien C
                   break;
                        ....
            }
            function connect(){
            $dbhost="localhost";
            $dbuser="toto";
            $dbpass="toto";
            $dblink=mysql_connect($dbhost,$dbuser,$dbpass);
            mysql_select_db("test",$dblink);
            return $dblink;
            }
    ?>
    comment pourrait récupérer la page "index.php" dans tel ou tel cas?
    ça peut marcher comme ça?
    Peut-on faire tenir tout ça dans une seule page? plus simple? est-ce moins lisible...?

    merci d'avance pour vos retours.

Discussions similaires

  1. Erreur de script
    Par Xdrei dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/02/2006, 23h14
  2. [MySQL] Recherche script d'authentification MsSQL en PHP
    Par dodik dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/02/2006, 09h56
  3. Réponses: 5
    Dernier message: 16/01/2006, 07h37
  4. erreur sur script de sauvegarde
    Par zouetchou dans le forum Langage
    Réponses: 5
    Dernier message: 08/12/2005, 08h50
  5. [pgAdminIII] Comment ignorer les erreurs de script
    Par Escandil dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 22/07/2005, 12h03

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