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 - 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

cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
25 avril 2005 à 17:17
Salut,



unset($_SERVER['PHP_AUTH_USER']);



a +






<li>
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
25 avril 2005 à 17:18
Ah, on peut ?
0
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:27
Merci, mais ça n'a aps l'air de marcher... J'ai essayé avec unset_serveur(). Voici la réponse : Call to undefined function: serveur_unset().

C'est vraiment très chia... J'ai un script du feu de Dieu et je peux pas l'utiliser à cause de ces variables qu'on ne peut pas toucher a cause du register_glabal a off....

S'il vous plait, une solution ! P L E A Z E H E L P.... ;-)
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
25 avril 2005 à 17:36
Tu n'as pas lu ce qu'a ecrit Antho ou quoi, lol ?? D'ou tu sors cette
fonction unset_serveur() ? Elle n'existe pas, et ce n'est pas ce que
t'a ecrit Antho...
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
25 avril 2005 à 17:45
LOL






<li>
0
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:50
j ai essayé avec son unset(). Mais ça n'a pas l'air de marcher...

J'explique mieux :
j'ai un script d'identification qui se lance si (!isset($_SERVER['PHP_AUTH_USER'])).
mais quand je me delogge avec :
unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);

Et que je revient sur mon script, il ne me demande pas de me relogger. Ce qui me fait dire que le unset() ne marche pas...

Je dois quitter le bureau, je serai de retour demain. Je vais egalement remplacer le !isset par empty...

Merci à vous de m'aider. Je commence à ne plus rien voir dans mon propre code...
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
25 avril 2005 à 17:52
Et le cache de ton navigateur...? Peut-etre...?
0
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:54
Ca marche bien sûr si je ferme le navigateur... Mais je cherche un code propre pour faire cela...
0
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
25 avril 2005 à 17:57
Et ton script c'est quoi précisément ? parce que le navigateur garde en
mémoire tant que tu ne le ferme pas les informations d'authentification.



a +






<li>
0
floxone
Messages postés
88
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
10 août 2007

25 avril 2005 à 18:04
Voici le script (je l'ai tellement changé que je n'ai pas le temps de voir si j'ai pas remis des coquilles...) :

---- Page à sécuriser ---

session_start();
if(!isset($_SESSION['username'])) {
include "securite5.php";
}

--- page de verification --- (c'est celle là qui ne ressemble plus à rien avec tout mes changements...)

<?php


//On se connecte à la base
include "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="Accès Administration"');
echo "<script>";
echo "window.location.href = '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('error making query');
$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>";
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 {
echo "<script>";
echo "window.location.href = 'logout.php'";
echo "</script>";
exit;
}


?>

--- page de delog ---

<?php


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


# Maintenant voilà comment détruire toutes les variables de session d'un seul coup #


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


# Ensuite, destruction de la session en cours #


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


// on detruit les variables d'identification serveur
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);


header('Location: haut.php') ; // Redirection vers la page d'accueil de votre site par exemple


?>

Merci encore a vous de m'aider... je dois vraiment filer... Je revient demain matin..

@ +
0
floxone
Messages postés
88
Date d'inscription
mardi 19 avril 2005
Statut
Membre
Dernière intervention
10 août 2007

25 avril 2005 à 20:17
Voici le dernier jet du script :


--- page de verif ---


<?php


//On se connecte à la base
include "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="My Realm"');
header('HTTP/1.0 401 Unauthorized');
}
//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('error making query');
$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 {
echo "<script>";
echo "window.location.href = 'logout.php'";
echo "</script>";
exit;
}


?>


--- page de lougout (d'ou vient le probleme...) ----


<?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


// on detruit les variables d'identification serveur


Header("HTTP/1.0 401 Unauthorized");
unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);


header('Location: haut.php') ; // Redirection vers la page d'accueil de votre site par exemple


?>





----> Quand je reviens a mon script de verif, il ne me demande pas de me relogger ! Il connait tjs les 2 variables... Tout du moins, c'est mon impression.
0
cs_sjon
Messages postés
861
Date d'inscription
mardi 26 mars 2002
Statut
Membre
Dernière intervention
29 novembre 2006
1
25 avril 2005 à 20:46
Sael og blesud

Il est impossible de détruire ces deux variables :

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

car elles sont stockée par le navigateur client qui les retransmet à chaque fois la seul façon de les détruire est de fermer le navigateur client. Ou alors de faire de l'identification via les sessions, base de données, formulaire d'identification etc ...

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

25 avril 2005 à 21:03
Il me semble également qu'il est impossible de forcer une valeur dans ces variables. Car mon phpinfo() me donne register_global a off. Est-ce exact ?

A ce moment là, dois-je prendre en compte qu'il n'y a aucune solution a mon probleme ?
0
cs_sjon
Messages postés
861
Date d'inscription
mardi 26 mars 2002
Statut
Membre
Dernière intervention
29 novembre 2006
1
25 avril 2005 à 21:17
Sael og blesud

Vous ne pouvez en effet prérenseigner ces variables ni même les forcer et ceux peut importe que votre régister_global soit à off ou pas, puisque ce sont des variables des navigateurs clients. Par contre vous pouvez sans trop de difficulté trouvé une solution à votre problème puisque vos comptes utilisateurs sont stockés dans une base de données MySQL et que vous travaillez avec des sessions. Faites-vous un formulaire d'identification, modifier 4 ou 5 lignes dans votre code et voilà le tour est joué.

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

25 avril 2005 à 21:29
est-il possible de changer les valeurs de ces variables grace a une redirection de la page au travers d'un bouton delogge ?

du style : header('Location: anonyme:anonyme@haut.php') ;
0
cs_sjon
Messages postés
861
Date d'inscription
mardi 26 mars 2002
Statut
Membre
Dernière intervention
29 novembre 2006
1
25 avril 2005 à 21:33
Sael og blesud

Non comme je viens de vous le dire vous ne pouvez pas modifier ces variables ... je n'y peux rien. Pourquoi ne pas vous faire un formulaire d'identification ?

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

25 avril 2005 à 21:40
Merci de votre patience.

Je continue a chercher une solution. Si je reste "borner" a cette methode c'est simplement qu'elle est sûre et qu'elle permet de faire un code très clair. En plus, cela fait un nouveau défi à surmonter.

Mais merci de votre participation.

PS : sur beaucoup de site, on parle de reinitialisation des variables lors d'une erreur 401 ou de forcage par adresse). Je continu a creuser la question...
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
26 avril 2005 à 09:34
Ah, ca me paraissait bizarre aussi!

Fait beau en Bretagne...?



De forcage de quoi...?
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 à 10:48
Je suis en train de voir si avec un lien forcé du style http://login:pass@page.php ca marcherai. pour le moment, cela ne marche pas du tout...

Sinon, je cherche comment faire in widow.close() de la page principale sans message d'accueil.

Je vous tiens au courant des evoltions (s'il y en a !)

Encore merci a tous.
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 à 10:49
dsl, petite coquille... c'est un widow.close() sans message d'alerte bien sûr...
0