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 :

Pouvoir demander plusieurs fois l'authentification


Sujet :

Langage PHP

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut Pouvoir demander plusieurs fois l'authentification
    Bonjour,

    je n'ai pas posé de question tout de suite, mais depuis ce matin, je n'y arrive pas...

    Mon but est de permettre de demander plusieurs fois une authentification, afin de faire plusieurs tests sans devoir redémarrer le PC entre 2 essais. J'utilise pour cela une variable de session. Le problème, c'est que soit il ne demandait jamais l'authentification, soit il la demande mais ne la valide pas. Le cas du code actuel que voici est le premier cas :

    indexpageavecauth.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
     
    <?php
    error_reporting(E_ALL ^ (E_NOTICE|E_WARNING|E_DEPRECATED));
    header('Content-type: text/html; charset=UTF-8');
    session_start();
     
    include (dirname(__DIR__).'\pdo\config\config.php');
     
    include dirname(__DIR__)."\pdo\authenticateauth.php";
    if ((isset($_SESSION["annul"]))&&($_SESSION["annul"]==0)) $auth=authentification();
     
    	// DEMANDE D'AUTHENTIFICATION
    	if ( ! $_SESSION["auth"])
    	{
    	  $_SESSION["annul"]==0;
    	  header( 'WWW-Authenticate: Basic realm="EIS SUPPORT WEBSITE"' );
    	  header("HTTP/1.1 401 Unauthorized");
    	  echo "Accès Restreint...<br/>";
    	  echo "<a href=\"".SITE_URL_HTTP."\indexpageavecauth.php\">Authentification</a>";
    	}
    	else
    	{
              ...
            }
    ?>
    <br/><a href="<?php echo SITE_URL_HTTP;?>\annul_auth.php">Annul_auth</a>

    authenticateauth.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
     
    <?php
    session_start();
     
    function authentification()
    {
    	$auth=0;
    	$entered_user = $_SERVER["PHP_AUTH_USER"];
    	$entered_pass = $_SERVER["PHP_AUTH_PW"];
     
    	if (isset($entered_user) && isset($entered_pass)) {
     
    		$auth=false;
    	        // contrôle authentif et positionnement de $auth
    		}
    	}
     
    	$_SESSION["auth"]=$auth;
     
    	return $auth;
    }
     
     
    ?>

    annul_auth.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    session_start();
    include (dirname(__DIR__).'\pdo\config\config.php');
    $_SESSION["auth"]=0;
    $_SESSION["annul"]=1;
    $file=SITE_URL_HTTP."/indexpageavecauth.php? ";
    header('Location:'.$file);
    exit;
    ?>

    config.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    // -----------------------------------------------------------
    // CONFIGURATION : 
    // -----------------------------------------------------------
    if(!defined('SITE_URL_WWW'))	define('SITE_URL_WWW',	'10.234.40.34/devjupiter/pdo');  // en TEST LOCAL, A REMPLACER PAR...
    //if(!defined('SITE_URL_WWW'))	define('SITE_URL_WWW',	'www.mon-site-en-ligne.com'); // en PRODUCTION
    if( !defined('SITE_URL_HTTP'))	define('SITE_URL_HTTP',	'http://'.SITE_URL_WWW);
     
    ?>
    Que faut-il changer ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Après un brin de recherche, je suis tombé sur une solution complètement différente (et plus simple) mais contrairement à ce que je pensais, la déconnexion n'est pas faite :

    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
     
    <div id="haut">
    <?php
     
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
       header('WWW-Authenticate: Basic realm="My Realm"');
       header('HTTP/1.0 401 Unauthorized');
       echo 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
       exit;
    } else {
        if (isset($_REQUEST['logout'])) {
            header('HTTP/1.0 401 Unauthorized');
            echo 'Vous êtes déconnecté !';
    ?><br/><a href="<?php echo $_SERVER['PHP_SELF'];?>#haut">recommencer</a><?php
            exit;
        }
        echo "<p>Bonjour, {$_SERVER['PHP_AUTH_USER']}.</p>";
        echo "<p>Votre mot de passe est {$_SERVER['PHP_AUTH_PW']}.</p>";
        echo '<a href="'.$_SERVER['PHP_SELF'].'">continuer</a> | <a href="'.$_SERVER['PHP_SELF'].'?logout">deconnexion</a>';
    }
     
    ?>
    </div>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 167
    Points
    167
    Par défaut
    Bonjour,
    as tu tenté la déconnexion avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    unset($_SESSION['MACHIN_CHOSE']);
    //...
    //...
    unset($_SERVER['PHP_AUTH_USER']);
    unset($_SERVER['PHP_AUTH_PW']);
    unset($_SERVER['PHP_AUTH_DIGEST']);
    session_destroy();
    PS: Éviter d'envoyer des header() avant session_start()

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Bien que pas sûr que les headers aient quelque chose à voir avec les sessions, comme ça mange pas de pain, j'ai rajouté la création des sessions. Comme mon identification est de type basic et non digest, la variable $_SERVER['PHP_AUTH_DIGEST'] n'existe pas. J'ai néanmoins tenté d'utiliser ton code, mais ça ne se déconnecte pas

    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
     
    <div id="haut">
    <?php
    session_start();
    var_dump($_SERVER['PHP_AUTH_USER']);
    var_dump($_SERVER['PHP_AUTH_PW']);
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
       header('WWW-Authenticate: Basic realm="My Realm"');
       header('HTTP/1.0 401 Unauthorized');
       echo 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
       exit;
    } else {
        if (isset($_REQUEST['logout'])) {
            header('HTTP/1.0 401 Unauthorized');
            echo 'Vous êtes déconnecté !';
    	unset($_SERVER['PHP_AUTH_USER']);
    	unset($_SERVER['PHP_AUTH_PW']);
    	session_destroy();
    ?><br/><a href="<?php echo $_SERVER['PHP_SELF'];?>#haut">recommencer</a><?php
            exit;
        }
        echo "<p>Bonjour, {$_SERVER['PHP_AUTH_USER']}.</p>";
        echo "<p>Votre mot de passe est {$_SERVER['PHP_AUTH_PW']}.</p>";
        echo '<a href="'.$_SERVER['PHP_SELF'].'">continuer</a> | <a href="'.$_SERVER['PHP_SELF'].'?logout">deconnexion</a>';
    }
     
    ?>
    </div>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour Laurent,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <div id="haut">
    <?php
    session_start();
    Ces 3 lignes ne te posent pas de problème existenciel ?

    Que tu ne sois sûr de rien, je veux bien.
    Mais que tu refasses les même erreurs encore et encore....

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    OK, j'ai corrigé mon erreur mais toujours pas de déconnexion :

    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
     
    <?php
    header('Content-type: text/html; charset=UTF-8');
    error_reporting(E_ALL);
    ini_set('display_errors','1'); 
    session_start();
    ?> 
    <div id="haut">
    <?php
    var_dump($_SERVER['PHP_AUTH_USER']);
    var_dump($_SERVER['PHP_AUTH_PW']);
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
       header('WWW-Authenticate: Basic realm="My Realm"');
       header('HTTP/1.0 401 Unauthorized');
       echo 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
       exit;
    } else {
        if (isset($_REQUEST['logout'])) {
            header('HTTP/1.0 401 Unauthorized');
            echo 'Vous êtes déconnecté !';
    	unset($_SERVER['PHP_AUTH_USER']);
    	unset($_SERVER['PHP_AUTH_PW']);
    	session_destroy();
    ?><br/><a href="<?php echo $_SERVER['PHP_SELF'];?>#haut">recommencer</a><?php
            exit;
        }
        echo "<p>Bonjour, {$_SERVER['PHP_AUTH_USER']}.</p>";
        echo "<p>Votre mot de passe est {$_SERVER['PHP_AUTH_PW']}.</p>";
        echo '<a href="'.$_SERVER['PHP_SELF'].'">continuer</a> | <a href="'.$_SERVER['PHP_SELF'].'?logout">deconnexion</a>';
    }
     
    ?>
    </div>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 167
    Points
    167
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    OK, j'ai corrigé mon erreur mais toujours pas de déconnexion :
    Apparemment non !
    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
    <?php
    session_start(); // ICI et avant tout code
    // et la suite ICI ....
     
    header('Content-type: text/html; charset=UTF-8');
    error_reporting(E_ALL);
    ini_set('display_errors','1'); 
     
    ?> 
    <div id="haut">
    <?php
     
    if( isset($_SERVER['PHP_AUTH_USER'])) var_dump($_SERVER['PHP_AUTH_USER']);
    if( isset($_SERVER['PHP_AUTH_PW'])) var_dump($_SERVER['PHP_AUTH_PW']);
     
    // ...

    Puis essais d'envoyer l'entête suivante (301) pour la déconnexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (isset($_REQUEST['logout'])) {
            unset($_SERVER['PHP_AUTH_USER']);
            unset($_SERVER['PHP_AUTH_PW']);
            session_destroy();
            header('Location: url_a_rediriger', TRUE, 301);
            exit;
    }
    D'après la documentation PHP, pour certains navigateurs Internet explorer, il faut envoyer l'en-tête d'identification (WWW-Authenticate) avant le code de HTTP/1.0 401

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    J'espère que ce coup-ci, y a plus de bug...J'ai rajouté le header 301 ; et pour l'URL à rediriger, comme on ne change pas de répertoire, j'ai juste mis le nom du fichier. Par contre, même si je clique sur "déconnexion", plus de message "vous êtes déconnecté" et pas de formulaire d'identification.

    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
     
    <?php
    session_start();
    header('Content-type: text/html; charset=UTF-8');
     
    error_reporting(E_ALL);
    ini_set('display_errors','1'); 
    ?> 
    <div id="haut">
    <?php
    var_dump($_SERVER['PHP_AUTH_USER']);
    var_dump($_SERVER['PHP_AUTH_PW']);
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
       header('WWW-Authenticate: Basic realm="My Realm"');
       header('HTTP/1.0 401 Unauthorized');
       echo 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
       exit;
    } else {
        if (isset($_REQUEST['logout'])) {
            header('HTTP/1.0 401 Unauthorized');
            echo 'Vous êtes déconnecté !';
    	unset($_SERVER['PHP_AUTH_USER']);
    	unset($_SERVER['PHP_AUTH_PW']);
    	session_destroy();
    	header('Location: auth2.php', TRUE, 301);
    	?><br/><a href="<?php echo $_SERVER['PHP_SELF'];?>#haut">recommencer</a><?php
            exit;
        }
        echo "<p>Bonjour, {$_SERVER['PHP_AUTH_USER']}.</p>";
        echo "<p>Votre mot de passe est {$_SERVER['PHP_AUTH_PW']}.</p>";
        echo '<a href="'.$_SERVER['PHP_SELF'].'">continuer</a> | <a href="'.$_SERVER['PHP_SELF'].'?logout">deconnexion</a>';
    }
     
    ?>
    </div>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 167
    Points
    167
    Par défaut
    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
    <?php
    session_start(); // Avant tout envoi serveur, header, espace, saut de ligne, caractères
    //Et doit être présent sur toute page générée
     
     
    header('Content-type: text/html; charset=UTF-8');
     
    error_reporting(E_ALL);
    ini_set('display_errors','1'); 
     
    if (isset($_REQUEST['logout'])) {
        header('HTTP/1.0 401 Unauthorized');
        unset($_SERVER['PHP_AUTH_USER']);
        unset($_SERVER['PHP_AUTH_PW']);
        session_destroy();
        header('Location: auth2.php?disconnected', TRUE, 301);
        exit;
    }
     
    if (isset($_REQUEST['disconnected'])) {
        $textes_d_authentification. = 'Vous êtes déconnecté !';
        $textes_d_authentification. = '<br/><a href="' . $_SERVER['PHP_SELF'] . '#haut">recommencer</a>';
    }
     
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
       header('WWW-Authenticate: Basic realm="My Realm"');
       header('HTTP/1.0 401 Unauthorized');
       $textes_d_authentification. = 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
       exit;
    } 
    else {
        $textes_d_authentification. = "<p>Bonjour, "  . $_SERVER['PHP_AUTH_USER'] . "</p>
        " . $textes_d_authentification . "<p>Votre mot de passe est " . $_SERVER['PHP_AUTH_PW'] . "</p>";
        $textes_d_authentification. = '<a href="' . $_SERVER['PHP_SELF'] . '">continuer</a> | <a href="' . $_SERVER['PHP_SELF'] . '?logout">deconnexion</a>';
    }
     
    ?>
    <div id="haut">
    <?php
    var_dump($_SERVER['PHP_AUTH_USER']);
    var_dump($_SERVER['PHP_AUTH_PW']);
    echo $textes_d_authentification;
    ?>
    </div>

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Merci de me proposer une solution, mais
    Notice: A session had already been started - ignoring session_start() in C:\wamp\www\test\auth2.php on line 2
    soit c'est simple pour toi, soit je me tourne vers une solution basée sur les sessions...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 167
    Points
    167
    Par défaut
    La page retournée par PHP contient deux fois session_start()
    As tu utilisé un include ou un require ?... qui fait que session_start est utilisé plus d'une fois sur la page générée.

    J'ai mis ton div et tes messages en bas afin que session_start(), ensuite les headers soient utilisés avant d'afficher quoi que ce soit dans le navigateur (y compris le tout premier espace).

    J'ai séparé logout de disconnected, parce que la redirection (et le exit()) ne permet pas de voir ton message "Vous êtes déconnecté !".

    Et j'ai sortie logout de ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!isset($_SERVER['PHP_AUTH_USER']))
    pour qu'il soit traité quelque soit la valeur de PHP_AUTH_USER ou vide.

    PS : J'ai oublié de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $textes_d_authentification= "";
    avant le premier if

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Non, pas de include ni require, mais juste ta page :
    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
    <?php
    session_start(); // Avant tout envoi serveur, header, espace, saut de ligne, caractères
    //Et doit être présent sur toute page générée
    header('Content-type: text/html; charset=UTF-8');
    error_reporting(E_ALL^E_NOTICE^E_DEPRECATED);
    ini_set('display_errors','1'); 
     
    if (isset($_REQUEST['logout'])) {
        header('HTTP/1.0 401 Unauthorized');
        unset($_SERVER['PHP_AUTH_USER']);
        unset($_SERVER['PHP_AUTH_PW']);
        session_destroy();
        header('Location: auth2.php?disconnected', TRUE, 301);
        exit;
    }
     $textes_d_authentification= "";
    if (isset($_REQUEST['disconnected'])) {
        //$textes_d_authentification .= 'Vous êtes déconnecté !';
       // $textes_d_authentification .= '<br/><a href="' . $_SERVER['PHP_SELF'] . '#haut">recommencer</a>';
    }
     
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
       header('WWW-Authenticate: Basic realm="My Realm"');
       header('HTTP/1.0 401 Unauthorized');
       $textes_d_authentification .= 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
       exit;
    } 
    else {
        $textes_d_authentification .= "<p>Bonjour, "  . $_SERVER['PHP_AUTH_USER'] . "</p>
        " . $textes_d_authentification . "<p>Votre mot de passe est " . $_SERVER['PHP_AUTH_PW'] . "</p>";
        $textes_d_authentification .= '<a href="' . $_SERVER['PHP_SELF'] . '">continuer</a> | <a href="' . $_SERVER['PHP_SELF'] . '?logout">deconnexion</a>';
    }
     
    ?>
    <div id="haut">
    <?php
    var_dump($_SERVER['PHP_AUTH_USER']);
    var_dump($_SERVER['PHP_AUTH_PW']);
    echo $textes_d_authentification; 
    ?>
    etle fait de rajouter la ligne oubliée a supprimé 2 erreurs de notice.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 209
    Points : 167
    Points
    167
    Par défaut
    Bon je te donnes la solution :
    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
    <?php session_start(); 
    // Avant tout envoi serveur, header, espace, saut de ligne, caractères
    //Et doit être présent sur toute page générée
    header('Content-type: text/html; charset=UTF-8');
    error_reporting(E_ALL^E_NOTICE^E_DEPRECATED);
    ini_set('display_errors','1'); 
     
    $textes_d_authentification= "";
    if (isset($_GET['logout'])) {
        unset($_SERVER['PHP_AUTH_USER']);
        unset($_SERVER['PHP_AUTH_PW']);
        session_destroy();
        header('Location: index.php?disconnected', TRUE, 301);
     
     
    }
    if (isset($_GET['disconnected'])) {
        $textes_d_authentification .= 'Vous êtes déconnecté !';
        $textes_d_authentification .= '<br/><a href="' . $_SERVER['PHP_SELF'] . '">recommencer</a>';
    }
     
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
       header('WWW-Authenticate: Basic realm="My Realm"');
       header('HTTP/1.0 401 Unauthorized');
       $textes_d_authentification .= 'Texte utilisé si le visiteur utilise le bouton d\'annulation';
     
    } 
    else {
        $textes_d_authentification .= "<p>Bonjour, "  . $_SERVER['PHP_AUTH_USER'] . "</p>
        " . $textes_d_authentification . "<p>Votre mot de passe est " . $_SERVER['PHP_AUTH_PW'] . "</p>";
        $textes_d_authentification .= '<a href="' . $_SERVER['PHP_SELF'] . '">continuer</a> | <a href="' . $_SERVER['PHP_SELF'] . '?logout">deconnexion</a>';
    }
     
    ?>
    <div id="haut">
    <?php
    var_dump($_SERVER['PHP_AUTH_USER']);
    var_dump($_SERVER['PHP_AUTH_PW']);
    echo $textes_d_authentification; 
    ?>

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    J'avais déjà répondu mais je viens de m'apercevoir que ma réponse n'y est pas

    Pour dire qu'il y a encore des soucis :

    1- si je laisse le session-start(), j'ai un message d'erreur comme quoi il a déjà été "starté"

    2-si je le commente (ou pas d'ailleurs), pour passer dans le else qui affiche "bonjour machin, votre mot de passe est toto", seule méthode : bouton "annuler" puis flèche du navigateur "page précédente".
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Bon, j'ai abandonné la solution initiale d'authentification, et maintenant, l'authentification est une variable de session ($_SESSION['auth']) et j'ai rajouté une fonction qui remet à false cette variable...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

Discussions similaires

  1. Valeurs de paramètre demandées plusieurs fois
    Par matth32 dans le forum Access
    Réponses: 3
    Dernier message: 15/03/2013, 21h02
  2. Réponses: 170
    Dernier message: 19/08/2009, 16h13
  3. demander plusieurs fois mot de passe avec htaccess
    Par magy91 dans le forum Sécurité
    Réponses: 1
    Dernier message: 29/02/2008, 17h44
  4. Pouvoir afficher plusieurs fois le même carctère
    Par kerido dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 25/10/2007, 15h44
  5. Sans pouvoir cliquez plusieurs fois
    Par X-plode dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 15/06/2007, 16h13

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