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 8
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 Membre 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 Membre 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 8
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 Membre 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 8
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 Membre 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
Rejoignez-nous