Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/03/2007, 23h47   #1
Membre du Club
 
Inscription : janvier 2004
Messages : 71
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 71
Points : 62
Points : 62
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 :
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 :
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
Orangina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2007, 08h19   #2
Membre du Club
 
Inscription : janvier 2004
Messages : 71
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 71
Points : 62
Points : 62
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.
Orangina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2007, 11h33   #3
Membre du Club
 
Inscription : janvier 2004
Messages : 71
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 71
Points : 62
Points : 62
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.
Orangina est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h33.


 
 
 
 
Partenaires

Hébergement Web