Comment détruire la la variable super globale $_SERVER['PHP_AUTH_USER'] ?

floxone
Messages postés
88
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
10 août 2007
- 25 avril 2005 à 17:06
black_dragon_templar
Messages postés
2
Date d'inscription
dimanche 11 décembre 2005
Statut
Membre
Dernière intervention
17 juillet 2011
- 17 juil. 2011 à 17:26
tout est dit dans le titre...


J'ai besoin de détruire la variable super globale
$_SERVER['PHP_AUTH_USER'].


Je ne trouve pas comment faire... C'est pour pouvoir vider les valeurs en appuyant sur un bouton !


Merci...
A voir également:

32 réponses

malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
26 avril 2005 à 11:07
Je me demande pourquoi tu cherches a reinventer la roue...mais bon. Bon courage.
0
floxone
Messages postés
88
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
10 août 2007

26 avril 2005 à 12:04
merci malalam.

je veux juste faire des pages sécurisées. Et le fait que ce soit les variables du serveur qui participent "aux sessions", fait que le niveau de sécurité est très bon.

Je continu dans cette voie...

Si quelqu un a un script de fermeture de fenetre sans message et qui marche sur tout les navigateurs, je suis preneur !
0
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
26 avril 2005 à 15:21
Tu n'en trouveras pas je pense






<li>
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
26 avril 2005 à 15:36
et en plus, widow.close()... fermer la veuve ? lol...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
26 avril 2005 à 16:00
lol, tu t'es donné la peine de chercher la traduction ^^



mdr






<li>
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
26 avril 2005 à 16:19
Lol heu non, quand meme pas...mais j'ai une licence d'anglais, mon pere
est prof d'anglais, et j'ai travaille et vecu en Irlande pendant 1 an
(l'annee derniere)...j'ai un anglais courant, c'est tout, donc je n'ai
pas pu m'empecher de remarquer le widow...desole ;-)
0
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
26 avril 2005 à 16:24
pas mal ;-)






<li>
0
cs_sjon
Messages postés
861
Date d'inscription
mardi 26 mars 2002
Statut
Membre
Dernière intervention
29 novembre 2006
1
26 avril 2005 à 23:43
Sael og blesud


Sous IE6.0 (cela déconne sous IE5.5 et 5.0 tandis que sous IE4 et les autres navigateurs comme Mozilla, Firefox, Nestscape, Opéra, Safari, Amaya ... cela ne fonctionne pas) vous pouvez faire pour fermer votre fenêtre principale ceci :


<script>
window.opener=self;
window.close(self);
</script>


Cependant cela ne résoudra pas votre problème puisque je ne vois pas comment ouvrir une nouvelle fenêtre une fois que la fenêtre principale est fermée. A moins de demander à l'utilisateur de revenir manuellement sur votre site, ce que tout bon internaute ne fera pas juste après avoir viré votre site de ses favoris. Et si vous ouvrez une nouvelle fenêtre juste avant de fermer la principale, le navigateur retransmettra encore les variables suivantes soit :


$_SERVER['PHP_AUTH_USER'] et $_SERVER['PHP_AUTH_PW'],

donc cela ne résoud en rien votre problème.

Le truc s'est que vous essayer de coupler deux systèmes d'authentification qui ne sont pas prévus du tout pour travailler ensemble. L'un est persistant sur la durée de vie du navigateur tandis que l'autre est volatile, cela ne peut pas donner un bon ménage et le divorce n'est pas loin. Donc si vous tenez à jouez les entremetteurs allez y cependant je pense qu'il s'agît là plus d'une perte de temps qu'autre chose.

Vous parlez de vouloir sécuriser vos pages, soit c'est très bien, mais je ne vois pas bien en quoi les sessions par exemple ne sont pas suffisament sécurisé pour vous. Tant qu'elles sont bien gérées cela ne devrait pas poser de problème. Ou alors partez sur du htaccess. Cela vous demandra de revoir la conception et de réorganiser votre site, mais je pense que votre "délire" pardonnez moi l'expression c'est de la perte de temps, à moins bien sûr de développer un module Apache qui soit en mesure de le gérer.

Bon courage quand même ...

Sigurjon Birgir Sigurdsson aka Sjon

Si la réponse vous convient merci de l'accepter ...

Fra en skal en med eydarinnar ...
0
floxone
Messages postés
88
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
10 août 2007

27 avril 2005 à 10:10
Bon, voici la solution que je conserve :

--- page a securisee ---

session_start();


if(!isset($_SESSION['username'])) {
include "../commun/securite.php";
}

--- page de verification ---

<?php


//On se connecte à la base
include "../commun/connexion.php";
connection_base();


//si on ne s'est pas encore identifié (pas de nom sur le serveur ou pas de session enregistrée), on se logge
if (!isset($_SERVER['PHP_AUTH_USER']))
{
//lancement de la fenetre de saisie de loggin + mot de passe
header('WWW-Authenticate: Basic realm="Administration"');
header('HTTP/1.0 401 Unauthorized');
echo "<script>";
echo "window.location.href = '../commun/logout.php'";
echo "</script>";
}
//on initialise 2 variables pour la reguete sql
$user_name=$_SERVER['PHP_AUTH_USER'];
$password=$_SERVER['PHP_AUTH_PW'];


//Requêtes mySQL pour établir la validation.
$query = "SELECT * FROM users WHERE login='".$user_name."' AND pass='".$password."' ";


//Exécution de la requête mySQL et affectation du nombre de rangés valides dans la table.
$result = mysql_query($query) or die("Erreur d'exécution : Requête SQL incorrecte ! Veuillez fermer votre navigateur pour recommencer ...");
$affected_rows = mysql_num_rows($result);


//Si il y a un enregistrement, la connexion est valide sinon invalide.
if($affected_rows == 1) {


//ajoute l'utilisateur à une variable de session et rafraichi la page
$_SESSION['username'] = $user_name;
echo "<script language='JavaScript' type='text/javascript'>";
echo "location.reload()";
echo "</script>";
exit;
}
//sinon, on redirige sur l'accueil tout en détruisant la session au travers de la page logout.php
else {
//lancement de la fenetre de saisie de loggin + mot de passe
header('WWW-Authenticate: Basic realm="Login ou Mot de Passe Invalide !"');
header('HTTP/1.0 401 Unauthorized');
echo "<script>";
echo "window.location.href = '../commun/logout.php'";
echo "</script>";
exit;
}


?>

--- page de logout ---

<?php


session_start(); // On démarre la session


session_unset(); // J'efface TOUTES les varibles de sessions


session_destroy(); // Destruction de la session en cours

echo '<SCRIPT Language="JavaScript">';
echo 'opener=self;';
echo 'self.close();';
echo '</SCRIPT>';


?>

C'est un script tres simple pour securiser des pages. Mais il faut savoir, que cela me sert a gerer qu'un seul administrateur + une societe de maintenance et qu'ils peuvent ainsi choisir de s'identifier ou pas. Le niveau de securite dependra de leur souhait. Mais il est vrai que la fermeture de fenetre est un peu brutal pour se delogger. La meilleure solution : activer le register_global a ON pour pouvoir reinitialiser ces variables.

Merci a tous de votre participation.
0
tansel
Messages postés
2
Date d'inscription
mercredi 5 octobre 2005
Statut
Membre
Dernière intervention
20 mai 2006

20 mai 2006 à 05:06
Salut,

J'avais le même problème que toi et je m'en suis sorti comme ca...

--------------------auth.php
<?

  if (!isset($_SERVER['PHP_AUTH_USER'])) {
 
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
   
    echo 'Texte utilis&eacute; si le visiteur utilise le bouton d\'annulation';
    exit;
   
  } elseif(!isset($_SESSION['session_id'])){
 
   header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
   
    echo 'Texte utilis&eacute; si le visiteur utilise le bouton d\'annulation';
    exit;
   
  }else{
$nom=$_SERVER['PHP_AUTH_USER'];
$mot_de_passe=$_SERVER['PHP_AUTH_PW'];
//$nom=$_POST['nom'];
//$mot_de_passe=$_POST['mot_de_passe'];
include('connexion.php');
$sql="SELECT * FROM utilisateur WHERE nom='$nom' && mot_de_passe='$mot_de_passe'";
    $req = @mysql_query($sql) or die('Erreur SQL'.$sql);
    $num=mysql_num_rows($req);
   
if($num > 0){

    session_start();
    session_regenerate_id();
    $_SESSION['session_id']=session_id();
   
    echo $_SESSION['session_id'];
   
        echo '    <script language="javascript"
         type="text/javascript">
        <!--
        setTimeout(window.location.href="../index.php?page=Accueil&SID='.$_SESSION['session_id'].'&modifier=apercu",10000);
        -->
        </script>';
        echo '[../index.php Authentification ok]';
}else{

    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
   
     echo 'Texte utilis&eacute; si le visiteur utilise le bouton d\'annulation';
    exit;
}}

?>

--------logout.php

<? session_start();

unset($_SESSION['session_id']);
 session_unset();
  session_destroy();
header('Location: ../index.php') ;

?>

Si ca peut t'inspirer

++

-------------------------------------------------------
Site en construction: www.tansel.info, dite moi ce que vous en pensez...
0
tansel
Messages postés
2
Date d'inscription
mercredi 5 octobre 2005
Statut
Membre
Dernière intervention
20 mai 2006

20 mai 2006 à 05:13
Désolé, le script est foireux, si quelqu'un pouvai l'effacer merci
0
black_dragon_templar
Messages postés
2
Date d'inscription
dimanche 11 décembre 2005
Statut
Membre
Dernière intervention
17 juillet 2011

17 juil. 2011 à 17:26
pour ce qui recherche ebnncore une reponse...
il y a 3 variables à detruire:

unset($_SERVER['PHP_AUTH_USER']); unset($_SERVER['PHP_AUTH_PW']); unset($_SERVER['PHP_AUTH_DIGEST']);

'digest' : Lorsque vous utilisez l'authentification HTTP Digest, cette variable est définie dans l'en-tête "Authorization" envoyé par le client (que vous devez donc utiliser pour réaliser la validation appropriée).
0