Comment détruire la la variable super globale $_SERVER['PHP_AUTH_USER'] ?
floxone
Messages postés88Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention10 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 !
floxone
Messages postés88Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention10 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.... ;-)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
floxone
Messages postés88Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention10 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...
floxone
Messages postés88Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention10 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..
floxone
Messages postés88Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention10 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('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.
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 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 ...
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 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 ...
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 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 ...
floxone
Messages postés88Date d'inscriptionmardi 19 avril 2005StatutMembreDernière intervention10 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...