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 :

L'index PHP_AUTH_USER n'existe pas


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut L'index PHP_AUTH_USER n'existe pas
    Bonjour,

    comme je l'ai déjà dit, je tente de faire tourner un vieux code avant de le moderniser afin d'avoir un moyen de voir le comportement attendu (vieux, donc notamment utilise encore les fonctions mysql_xxx pour interroger les tables MySql).
    Peut-être important : je tente de le faire tourner en local (Wampserver).
    Il y a une authentification basique :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	if ( ! $auth )
    	{
    	  header( 'WWW-Authenticate: Basic realm="EIS SUPPORT WEBSITE"' );
    	  header("HTTP/1.1 401 Unauthorized");
    	  echo "Accès Restreint...<br>";
    	  echo "<a href=\"index.php\">Authentification</a>";
    	}
    	else
    	{...

    Mon souci est que les variables d'authentification ($_SERVER["PHP_AUTH_USER"] et $_SERVER["PHP_AUTH_PW"]) ne sont pas reconnues ; message d'erreur :
    Notice: Undefined index: PHP_AUTH_USER in ...
    Est-ce lié au fait que je suis en local ou y a-t-il une autre raison ?

  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
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut Undefined index: PHP_AUTH_USER
    J'ai un code qui contient l'affectation $entered_user = $_SERVER["PHP_AUTH_USER"]; et qui m'affiche le message d'erreur du titre (je suis sous wamp) ; y a-t-il une solution pour éviter cette erreur ?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(isset($_SERVER["PHP_AUTH_USER"])) {
       $entered_user = $_SERVER["PHP_AUTH_USER"];
    }

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    C'est clair que mon statut de "débutant" n'est pas usurpé

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut Echec de connexion
    Bonsoir,

    j'ai un souci de connexion ; dans phpMyAdmin/utilisateurs, il y en a un dont le nom est "root" et à qui j'ai mis pour mot de passe "root" (aussi). Mais si je tente de me connecter :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    	include("authenticate.php");
    	$auth=authentification();
     
    	// DEMANDE D'AUTHENTIFICATION
    	if ( ! $auth )
    	{
    	  header( 'WWW-Authenticate: Basic realm="EIS SUPPORT WEBSITE"' );
    	  header("HTTP/1.1 401 Unauthorized");
    	  echo "Accès Restreint...<br>";
    	  echo "<a href=\"index.php\">Authentification</a>";
    	}
    	else
    	{
             ...

    et authenticate.php :
    Code php : 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
    error_reporting(E_ALL ^ (E_NOTICE|E_WARNING|E_DEPRECATED));
    function authentification()
    {
    	GLOBAL $user;
    	GLOBAL $pass;
    	GLOBAL $dbase;
    	if(isset($_SERVER["PHP_AUTH_USER"])) {
    		$entered_user = $_SERVER["PHP_AUTH_USER"];
    		}
    	if(isset($_SERVER["PHP_AUTH_PW"])) {
    		$entered_user = $_SERVER["PHP_AUTH_PW"];
    		}
    	if ((isset($entered_user) && isset($entered_pass)) or 1) {
    		$dbase="su_dev_eis";
    		$auth=false;
    		$link=mysql_connect("localhost","root","root") or die ("Connexion impossible sur le serveur MySQL");		
    		mysql_select_db($dbase) or die ("Sélection de la base SQL impossible");
    		$query = "SELECT * FROM users";
    		$result = mysql_query($query) or die ("Impossible d'exécuter la requete sur la table users...");
    		$num_rows = mysql_num_rows($result);
    		for ($i=0;$i<$num_rows;$i++) {		
    	    		$row = mysql_fetch_array($result);		
    			$usr = $row["user"]; 
    			$password = $row["password"];     
    			if (($usr == $entered_user) && ($password == $entered_pass)) {
    			    $auth = true;
    			    $user=$entered_user;
    			    $pass=$entered_pass;
    			}
    		  }
    	}
    	return $auth;
    }
    $auth=authentification();
     
     
    ?>
    Le "or 1" est à fin de debug pour passer dans cette boucle même en local et de plus, j'ai remplacé $entered_user et
    $entered_pass par "root" et "root" et le couple "root"/"root" pour la connexion n'est pas accepté ; pourquoi ?

  7. #7
    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
    Par défaut
    $entered_pass n'est pas défini.
    Quand on developpe, on ne cache pas les erreurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Oui, c'est vrai que cette variable n'était pas définie ; j'ai moi-même introduit le bug en faisant un copier-coller pour rajouter les 2 tests. Mais même en le corrigeant, le bug reste...

    Code php : 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
     
    <?php
    error_reporting(E_ALL ^ (E_DEPRECATED));
    function authentification()
    {
    	GLOBAL $user;
    	GLOBAL $pass;
    	GLOBAL $dbase;
    	if(isset($_SERVER["PHP_AUTH_USER"])) {
    		$entered_user = $_SERVER["PHP_AUTH_USER"];
    		}
    	else $entered_user="root"; 	
    	if(isset($_SERVER["PHP_AUTH_PW"])) {
    		$entered_pass = $_SERVER["PHP_AUTH_PW"];
    		}
    	else $entered_pass="root";	
    	if ((isset($entered_user) && isset($entered_pass))) {
    		$dbase="su_dev_eis";
    		$auth=false;
    		//mysql_connect("localhost",$entered_user,$entered_pass) or die ("Connexion impossible sur le serveur MySQL");
    		$link=mysql_connect("localhost",$entered_user,$entered_pass) or die ("Connexion impossible sur le serveur MySQL_authenticate");		
    		mysql_select_db($dbase) or die ("Sélection de la base SQL impossible");
    		$query = "SELECT * FROM users";
    		$result = mysql_query($query) or die ("Impossible d'exécuter la requete sur la table users...");
    		$num_rows = mysql_num_rows($result);
    		for ($i=0;$i<$num_rows;$i++) {		
    	    		$row = mysql_fetch_array($result);		
    			$usr = $row["user"]; 
    			$password = $row["password"];     
    			if (($usr == $entered_user) && ($password == $entered_pass)) {
    				$auth = true;
    			    $user=$entered_user;
    			    $pass=$entered_pass;
    			}
    		  }
    	}
    	return $auth;
    }
    $auth=authentification();
     
     
    ?>
    J'ai moins filtré les erreurs...juste le code déprécié.

  9. #9
    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
    Par défaut
    Je pense que tu devrais revoir comment on vérifie une authentification par une requête et plus généralement, comment on lit les résultat d'une requête.
    Également quel est l’intérêt de ta requête sur la table users ?
    Pour finir, affiche les erreurs réelles au lieu de messages personnalisés sinon tu n'iras pas loin en debugage.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Ta réponse me surprend car je n'ai pratiquement rien changé (ai déjà oublié quoi) et...ça marche

    Code php : 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
     
    <?php
    error_reporting(E_ALL ^ (E_DEPRECATED));
    function authentification()
    {
    	GLOBAL $user;
    	GLOBAL $pass;
    	GLOBAL $dbase;
    	if(isset($_SERVER["PHP_AUTH_USER"])) {
    		$entered_user = $_SERVER["PHP_AUTH_USER"];
    		}
    	else $entered_user="root"; 	
    	if(isset($_SERVER["PHP_AUTH_PW"])) {
    		$entered_pass = $_SERVER["PHP_AUTH_PW"];
    		}
    	else $entered_pass="root";	
    	if ((isset($entered_user) && isset($entered_pass))) {
    		$dbase="su_dev_eis";
    		$auth=false;
    		//mysql_connect("localhost",$entered_user,$entered_pass) or die ("Connexion impossible sur le serveur MySQL");
    		//$link=mysql_connect("localhost",$entered_user,$entered_pass) or die ("Connexion impossible sur le serveur MySQL_authenticate");		
    		$link=mysql_connect("localhost",$entered_user,$entered_pass) ;	
    		//mysql_select_db($dbase) or die ("Sélection de la base SQL impossible");
    		mysql_select_db($dbase);
    		$query = "SELECT * FROM users";
    		//$result = mysql_query($query) or die ("Impossible d'exécuter la requete sur la table users...");
    		$result = mysql_query($query);
    		$num_rows = mysql_num_rows($result);
    		for ($i=0;$i<$num_rows;$i++) {		
    	    		$row = mysql_fetch_array($result);		
    				$usr = $row["user"]; 
    				$password = $row["password"]; 
     
    				if (($usr == $entered_user) && ($password == $entered_pass)) {
    					$auth = true;
    					$user=$entered_user;
    					$pass=$entered_pass;
    				}
    		  }
    	}
    	return $auth;
    }
    $auth=authentification();
     
     
    ?>
    rappelle-toi que je reprend un code vieux de 10 ans (pour le modifier) et qu'il tourne...

    La table "users" est définie comme ça :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE IF NOT EXISTS `users` (
      `user` varchar(20) COLLATE latin1_bin DEFAULT NULL,
      `password` varchar(20) COLLATE latin1_bin DEFAULT NULL,
      `nom` varchar(20) COLLATE latin1_bin DEFAULT NULL,
      `prenom` varchar(20) COLLATE latin1_bin DEFAULT NULL,
      `localisation` varchar(30) COLLATE latin1_bin DEFAULT NULL,
      `phone` varchar(13) COLLATE latin1_bin DEFAULT NULL,
      `group` int(2) NOT NULL,
      UNIQUE KEY `user` (`user`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin;

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

Discussions similaires

  1. [PB ODBC] Ce serveur n'existe pas ou son accès est refusé
    Par meufeu dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/12/2015, 18h02
  2. [BDS4.][Delphi][BDE] Exception index n'existe pas.
    Par paulfr dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/04/2013, 00h00
  3. Réponses: 4
    Dernier message: 30/07/2007, 14h05
  4. erreur : la table n'existe pas !!!
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/06/2005, 14h17
  5. Le membre de collection requis n'existe pas
    Par mschistozis dans le forum Access
    Réponses: 4
    Dernier message: 25/10/2004, 16h41

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