IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Effacer des variables globales


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 71
    Points : 75
    Points
    75
    Par défaut Effacer des variables globales
    Bonjour

    Je cherche comment effacer des variables de session et de serveur dans une opération de déconnexion et ça ne marche pas du tout malgré pas mal de temps à consulter les docs et les messages.

    J'effectue l'identification suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    session_start();
    	if  (! isset($_SERVER['PHP_AUTH_USER']) || ! isset($_SERVER['PHP_AUTH_PW']) || 
    	($_SERVER['PHP_AUTH_USER'] != "r")	|| ($_SERVER['PHP_AUTH_PW'] != "r")) 
    	{
    	   header('WWW-Authenticate: Basic realm="l\'accès à l\'administration du site"');
    	   header('HTTP/1.0 401 Unauthorized');
    	   echo "Accès non autorisé";
    	   exit();
     
    	} 
    		// création d'un variable de session
    	$_SESSION['utilisateur'] = "Ok";
    	header("Location: Admin.php");
    Quand l'utilisateur se déconnecte je lance le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	session_start();
     
    	$_SESSION = array();           //Ecrase les variables de sessions en recréant un tableau vide
    	$_SESSION['utilisateur'] = "No";
            if (isset($_COOKIE[session_name()])) 
    	{
       		setcookie(session_name(), '', time()-42000, '/');
    	}
    	session_destroy();
     
    	$_SERVER['PHP_AUTH_USER'] = "";
    	$_SERVER['PHP_AUTH_PW'] = "";
     
    	unset($_SERVER['PHP_AUTH_USER']);
    	unset($_SERVER['PHP_AUTH_PW']);
     
    	header("Location: Index.php");
    Malheureusement mes variables ne semblent pas effacées. quand je relance l'identification $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'] et $_SESSION['utilisateur'] existent toujours et je ne repasse pas par la fenêtre d'identification.

    Quelqu'un aurait-il une idée de ce qui ne va pas dans mon code ou ma façon de procéder ?
    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 71
    Points : 75
    Points
    75
    Par défaut
    Bonjour

    Précision supplémentaire :
    je travail pour le moment avec un serveur local sur mon PC, installé avec EasyPHP 1.8, PHP 4.3.10. J'ai regardé dans la config de PHP, register_globals est à Off, je n'ai rien vu d'autre susceptible de m'aider.

    Les 2 scripts d'identification et de deconnexion sont dans 2 fichiers php différents.
    A la fin du script de déconnexion, si j'affiche les variables ($_SESSION['utilisateur'], $_SERVER['PHP_AUTH_USER'], ...) elles ont bien été supprimées, mais quand ensuite je relance l'identification, dès le début du script, si j'affiche les variables je les retrouve. Jusqu'à ce que je ferme mon navigateur ces variables existent, je n'arrive pas à les effacer.

    Etant débutant en PHP, je soupçonne une erreur grossière mais où ?

    Je cherche un exemple proche et simple de connexion-deconnexion, avec identification par header (pour éviter de passer par un formulaire), qui marche et que je pourrais tester chez moi pour comparer : si vous avez un lien ça m'interesse.
    Merci.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 71
    Points : 75
    Points
    75
    Par défaut
    Bonjour

    Après quelques heures de plus, je crois avoir compris.
    Ma variable $_SESSION['utilisateur'] est bien supprimée correctement mais pas les variables $_SERVER['PHP_AUTH_USER'] et $_SERVER['PHP_AUTH_PW'].

    C'est la fonction header("WWW-Authenticate: ....);
    qui n'est utilisable qu'une seule fois d'après ce que j'ai compris, jusqu'à ce qu'on ferme le navigateur, alors que dans mon code je la réutilise.
    Je vais donc faire un formulaire de connexion.
    Merci quand même à ceux qui m'ont lu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Peut-on avoir des variables globales ?
    Par Seth77 dans le forum C#
    Réponses: 7
    Dernier message: 10/09/2006, 17h07
  2. comment faire des variables globales
    Par user_ensias dans le forum Struts 1
    Réponses: 3
    Dernier message: 07/09/2006, 11h03
  3. portée des variables globales dans un fichier js
    Par crakazoid dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 14/04/2006, 17h49
  4. utilisation des variables global dans tout le projet
    Par EYENGA Joël dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/01/2006, 11h55
  5. De la bonne pratique des variables globales...
    Par say dans le forum C++Builder
    Réponses: 9
    Dernier message: 25/11/2005, 10h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo