Identifiant HTPASSWD

Résolu
Salutations,

J'utilise des routines htaccess/htpasswd pour authentifier certains accès à un backoffice associatif. Cela fonctionne bien.

Néanmoins, et sinon je ne vois pas pourquoi je viendrais vous enquiquiner, j'ai un léger bug que mes maigres connaissances en la matière ne me permettent pas de contourner :

J'utilise le code suivant :
(...)
<?php
$user = $_ENV["REDIRECT_REMOTE_USER"];
?>
(...)
<td align="right" nowrap="nowrap"><span class="cnx"> <font size="-1">Connecté en tant que : <font color="#990000"><?php echo $user; ?></font></font></span></td>
(...)
Cela fonctionne partout, sauf dans les pages avec des include PHP; Au bout du deuxième reload, la variable "$user" se vide.

Auriez-vous une idée ?

9 réponses

  1. Ton user disparait car l'utilisateur n'arrives plus directement de l'authentification. Si tu veux garder le nom d'utilisateur quelque part, passe par des sessions ou des cookies.
    1. J'en étais arrivé à la même conclusion, mais comment puis-je simplement faire ?
      1. Je viens d'essayer en boucle, mais en vain.

        Sur ma page index.php :
        <?php
        $user = $_SERVER["REDIRECT_REMOTE_USER"];
        session_start();
        $_SESSION['user'] = $user;
        // echo $user; // Debug
        ?>

        Sur ma page include fiche.php :
        <?php
        session_start();
        $user = $_SESSION['user'];
        echo $user; // Debug
        ?>

        Au bout du deuxième renvois, pareil, la variable est vierge.

        Any idea ?
        1. Essayes ceci:

          Sur ma page index.php :
          <?php
          session_start();
          if (!isset($_SESSION['user'])) {
          $user = $_SERVER["REDIRECT_REMOTE_USER"];
          }
          $_SESSION['user'] = $user;
          // echo $user; // Debug
          ?>


          Ensuite si tu as une zone deconnexion, oublies pas de flusher la session.
          1. Pareil :(.
            En fait, un simple 'F5' 2 fois de suite, et je perds la variable.
            1. Tu fais un refresh sur quelle page?

              ENsuite je me suis trompé excuses:

              <?php
              session_start();
              if (!isset($_SESSION['user'])) {
              $user = $_SERVER["REDIRECT_REMOTE_USER"];
              $_SESSION['user'] = $user;
              } else {
              $user = $_SESSION['user'];
              }
              // echo $user; // Debug
              ?>
              1. YES !

                Merci infiniment, cela fonctionne à merveille maintenant. :)