Rechercher : dans
Par :

Fermer une session htaccess

Dernière réponse le 3 jui 2009 à 17:40:05 Woody69, le 8 jan 2009 à 16:12:26 
 Signaler ce message aux modérateurs

Bonjour,

J'ai lu dans plusieurs forum qu'il était possible de créer un bouton "Déconnexion" qui pemettrait de déconnecter un utilisteur s'étant connecté via un .htaccess, et ce via un "header"...

Bref, en gros est-ce que quelqu'un pourrai m'expliquer la marche à suivre pour établir un processus de déconnexion lors d'une connexion par htaccess ?

Meilleures réponses pour « Fermer une session htaccess » dans :
Script au démarrage et à l'arrêt de Windows VoirL'astuce est valable pour Windows XP, Vista et 7 ; mais la méthode varie suivant l'édition de votre Windows (professionnelle ou familiale). Pour les éditions professionnelles ou intégrales Lancer l'éditeur de stratégie du groupe local : Menu...
Empêcher la fermeture automatique de l'invite de commandes Voir[.commentcamarche.net/faq/images/0-vM6JYjBN-cmd01.png ] Il arrive parfois, voir souvent que la fenêtre d'invite de commandes se ferme quand on veut voir des informations, comme son IP... Pour parer à ce problème il suffit de lancer l'invite de...
Le protocole FTP (File Transfer Protocol) VoirIntroduction au protocole FTP Le protocole FTP (File Transfer Protocol) est, comme son nom l'indique, un protocole de transfert de fichier. La mise en place du protocole FTP date de 1971, date à laquelle un mécanisme de transfert de...

1

Alain_42, le 8 jan 2009 à 17:51:57

Bonsoir,

tiens j'ai trouvé ça sur un forum je n'ai pas testé perso, amis apparemment ça marche:


<?php
//// deconnexion d'une authentification faite par .htaccess
// realm doit être le même que celui de .htaccess 
//realm c'est AuthName "......." du htaccess
header('WWW-Authenticate: Basic realm="private"');
header('HTTP/1.0 401 Unauthorized');
echo 'Texte affiche en cas d\'annulation';
exit();
?>

Répondre à Alain_42

2

Woody69, le 8 jan 2009 à 18:25:01

Merci pour le code

Je dois créer une nouvelle page php et insérer le code, puis faire un lien vers cette page ?

Répondre à Woody69

3

Alain_42, le 8 jan 2009 à 19:52:51

Oui c'est ça je viens de faire l'essai ça marche, qd tu cliques sur le lien ça ré affiche le pop up demandant les login et passwd

Répondre à Alain_42

4

Woody69, le 8 jan 2009 à 21:26:18

Lorsque je fais un lien vers mon fichier logout.php contenant ton code, voici ce que j'ai :

Warning: Cannot modify header information - headers already sent by (output started at /mnt/145/sdb/b/3/toprougemedias/Site/logout.php:9) in /mnt/145/sdb/b/3/toprougemedias/Site/logout.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at /mnt/145/sdb/b/3/toprougemedias/Site/logout.php:9) in /mnt/145/sdb/b/3/toprougemedias/Site/logout.php on line 14
Texte affiche en cas d'annulation

Peux tu m'expliquer stp ? Merci :)

Répondre à Woody69

5

Dalida, le 8 jan 2009 à 21:28:41

Salut,

Alain ne m'en voudra pas de te répondre à sa place, c'est une FAQ.
[ Mathieu ]

Il y a sûrement des pandas pour ne dépendre de rien

Répondre à Dalida

6

Alain_42, le 8 jan 2009 à 21:33:34

Pas de problème Dalida.

Et meilleurs voeux 2009 en passant

Répondre à Alain_42

7

Dalida, le 9 jan 2009 à 09:14:06

Salut Alain,

santé, chance, bonheur, et tout, et tout…
-:o)
[ Mathieu ]

Il y a sûrement des pandas pour ne dépendre de rien

Répondre à Dalida

8

Woody69, le 9 jan 2009 à 09:38:50

Merci à tous pour vos réponses, mais la faq concerne les sessions en php.

Pour ma part, j'utilise un htaccess et htpsswd

Pourquoi est-ce que j'obtien des erreures lorsque je fait un lien vers pas page logout ?

Merci

Répondre à Woody69

9

Dalida, le 9 jan 2009 à 09:46:18

Hum, hum…

le message d'erreur te dit "je ne peux pas envoyer les headers, ils ont déjà été envoyés".

dans ton source il y a :

header('WWW-Authenticate: Basic realm="private"');
header('HTTP/1.0 401 Unauthorized');

et dans la FAQ on ne t'a pas dit que c'est réservé aux sessions !!!
Lorsque vous utilisez une fonction PHP qui manipule les en-têtes HTTP comme par exemple:
    * header()
    * setcookie()
    * session_start()

et on t'explique :
    *  J'utilise echo, ou print au début de mon script. Idem, si j'ai un espace dans mon script qui n'est pas compris dans mes balises php, il sera considéré comme faisant partie de la source de la page à envoyer, et les en-têtes le précéderont. Ce qui peut provoquer une erreur du genre de celles dont on cherche la solution pendant plusieurs jours :-)
    * Le serveur envoie ces données, et les fait précéder par défaut d'en-têtes qui signifient que c'est une page html.
    * Si après celà dans mon script j'utilise une fonction qui touche aux en-têtes, elle ne pourra plus le faire car les en-têtes ont déjà été envoyées. J'obtiens donc une erreur du genre "headers already sent".

on reprend :
- un espace ;
- le serveur commence à balancer les infos et donc les headers HTML ;
- tu veux modifier les headers alors qu'ils sont déjà partis ;
- le serveur t'affiche une erreur…

donc il faut que tu trouves ce qui est envoyé avant le début de ton script.
[ Mathieu ]
Il y a sûrement des pandas pour ne dépendre de rien

Répondre à Dalida

10

Woody69, le 9 jan 2009 à 09:59:50

Ah ben voilà ! Là c'est clair !

Je dois vérifier le script de la page de déconnexion (si oui, elle ne contient que le code donné précédemment) ?
Dois-je placer la page logout.php avec le script dans le même dossier que le htaccess ?

Répondre à Woody69

11

Dalida, le 9 jan 2009 à 10:08:05
  • +1

à priori, depuis la page sécurisée tu fais un lien vers logout.php,
soit dit en passant, tu dois pouvoir limiter le script à :

<?php
header('WWW-Authenticate: Basic realm="private"');
header('HTTP/1.0 401 Unauthorized');
?>

le exit(); ne sert à rien puisque le script se termine tout seul et ça ne sert à rien d'envoyer un message puisque la boite de dialogue de connexion doit se ré-afficher toute seule. à toi de voir.

le script tu dois pouvoir le mettre n'importe où, il suffit d'adapter l'url du lien de déconnexion, là aussi il faut tester.
[ Mathieu ]
Il y a sûrement des pandas pour ne dépendre de rien

Répondre à Dalida

12

Alain_42, le 9 jan 2009 à 10:34:42
  • +2

Voilà celui que j'ai testé,il fonctionnne sous EasyPhp

<?php
//// deconnexion d'une authentification faite par .htaccess
// realm doit être le même que celui de .htaccess 
//realm c'est AuthName "......."
header('WWW-Authenticate: Basic realm="Acces protege"');
header('HTTP/1.0 401 Unauthorized');
echo 'Texte affiche en cas d\'annulation';
exit();
?> 


C'est vrai que le exit(); ne sert à rien

Répondre à Alain_42

13

Woody69, le 10 jan 2009 à 15:32:18

Super ça fonctionne enfin !

Merci et bonne continuation à tous !!

Répondre à Woody69

14

 joe, le 3 jui 2009 à 17:40:05

Sinon crée un lien vers "http://logout:logout@ton-site.com"
Le browser essaiera de se connecter avec le user logout qui a priori n'existe pas et aura pour effet de fermer la session precedente

Répondre à joe