Fermer une session htaccess
Résolu/Fermé
Woody69
Messages postés
125
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
22 mars 2012
-
8 janv. 2009 à 16:12
La chouette - 21 juin 2014 à 01:53
La chouette - 21 juin 2014 à 01:53
A voir également:
- Htaccess session
- Estelle vient de verrouiller sa session d'ordinateur. que peut-on dire ? ✓ - Forum Windows 7
- Veuillez ouvrir une session avec les privilèges du gestionnaire ✓ - Forum Jeux vidéo
- Teamviewer code de session expiré ✓ - Forum Windows XP
- Estelle vient de verrouiller sa session d’ordinateur. que peut-on dire ? ✓ - Forum Windows
- Gmail ouverture de session ✓ - Forum Gmail
16 réponses
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
9 janv. 2009 à 10:08
9 janv. 2009 à 10:08
à priori, depuis la page sécurisée tu fais un lien vers logout.php,
soit dit en passant, tu dois pouvoir limiter le script à :
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.
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.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
9 janv. 2009 à 10:34
9 janv. 2009 à 10:34
Voilà celui que j'ai testé,il fonctionnne sous EasyPhp
C'est vrai que le exit(); ne sert à rien
<?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
Sinon crée un lien vers "http://www.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
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
Attention au Basic realm="acces restreint" (il faut bien mettre le nom de votre realm du fichier .htaccess) :p
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
8 janv. 2009 à 17:51
8 janv. 2009 à 17:51
Bonsoir,
tiens j'ai trouvé ça sur un forum je n'ai pas testé perso, amis apparemment ça marche:
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(); ?>
jpharand
Messages postés
40
Date d'inscription
jeudi 4 juin 2009
Statut
Membre
Dernière intervention
19 novembre 2013
2
Modifié par jpharand le 18/12/2013 à 18:18
Modifié par jpharand le 18/12/2013 à 18:18
J'ai fini par y arriver (sans réafficher la popup d'authentification !) en compilant des idées d'ici et de là (http://www.ssi-developer.net/htaccess/htaccess_logout.shtml
... et ça semble marcher !
En gros :
Mon dossier "racine" nécessite une authentification, gérée par un fichier .htaccess (et un fichier paswd). Une fois identifié, je navigue dans mon site.
Dans mon dossier "racine", j'ai un dossier "deconnexion", qui contient deux fichiers :
- aurevoir.html (en gros, c'est une jolie page qui dit juste "déconnexion réussie" ;-)
- .htaccess (différent du .htaccess déjà cité) dont voici le contenu :
(La ligne "AuthUserFile /chemin_vers_mon_htpaswd/.htpasswd" me semble inutile, mais bon, je n'ai pas osé l'enlever...)
Et donc, une fois connecté dans mon site. Comment me déconnecter ?
J'ai un bouton "Quitter l'application" qui me redirige vers un fichier deconnexion.php dont voici la source :
Et comme je suis connecté en tant que fakeuser, je ne suis plus connecté à mon appli principale.
Enfin, ça m'a tout l'air de fonctionner, car je n'arrive pas à retrouver mon appli sans devoir me reconnecter.
... et ça semble marcher !
En gros :
Mon dossier "racine" nécessite une authentification, gérée par un fichier .htaccess (et un fichier paswd). Une fois identifié, je navigue dans mon site.
Dans mon dossier "racine", j'ai un dossier "deconnexion", qui contient deux fichiers :
- aurevoir.html (en gros, c'est une jolie page qui dit juste "déconnexion réussie" ;-)
- .htaccess (différent du .htaccess déjà cité) dont voici le contenu :
<Files aurevoir.html>En gros il limite l'accès à tous les fichiers de ce répertoire au seul utilisateur "fakeuser" (qui n'est pas un utilisateur ayant le moindre droit sur mon dossier "racine").
<Limit ALL>
AuthUserFile /chemin_vers_mon_htpaswd/.htpasswd
require user fakeuser
</Limit>
</Files>
SetEnv PHP_VER 5
(La ligne "AuthUserFile /chemin_vers_mon_htpaswd/.htpasswd" me semble inutile, mais bon, je n'ai pas osé l'enlever...)
Et donc, une fois connecté dans mon site. Comment me déconnecter ?
J'ai un bouton "Quitter l'application" qui me redirige vers un fichier deconnexion.php dont voici la source :
<?phpCelui-ci force une redirection vers mon dossier connexion avec l'utilisateur "fakeuser". Cet utilisateur est accepté par le .htaccess du dossier deconnexion. Ma page "aurevoir.html" s'affiche donc correctement.
header("Location: http://fakeuser:fakepass@oustt.alterre-bourgogne.org/deconnexion/aurevoir.html");
exit;
?>
Et comme je suis connecté en tant que fakeuser, je ne suis plus connecté à mon appli principale.
Enfin, ça m'a tout l'air de fonctionner, car je n'arrive pas à retrouver mon appli sans devoir me reconnecter.
Woody69
Messages postés
125
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
22 mars 2012
9
8 janv. 2009 à 18:25
8 janv. 2009 à 18:25
Merci pour le code
Je dois créer une nouvelle page php et insérer le code, puis faire un lien vers cette page ?
Je dois créer une nouvelle page php et insérer le code, puis faire un lien vers cette page ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
8 janv. 2009 à 19:52
8 janv. 2009 à 19:52
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
Woody69
Messages postés
125
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
22 mars 2012
9
8 janv. 2009 à 21:26
8 janv. 2009 à 21:26
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 :)
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 :)
Bonjour, juste un petit commentaire pour ceux qui auront ce genre de problème.
En fait un header doit être placer avant tout script html, sinon, on à ce type d'erreur.
Ainsi, lorsque l'on inclut des page dans d'autre page, on oubli souvent ce petit détail qui provoque alors l'erreur.
Si tu regarde le code source de ta page lorsque l'erreur apparait, il y aura surement du html avant ton erreur.
Il faut donc placer impérativement le header avant ce code html.
En fait un header doit être placer avant tout script html, sinon, on à ce type d'erreur.
Ainsi, lorsque l'on inclut des page dans d'autre page, on oubli souvent ce petit détail qui provoque alors l'erreur.
Si tu regarde le code source de ta page lorsque l'erreur apparait, il y aura surement du html avant ton erreur.
Il faut donc placer impérativement le header avant ce code html.
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
8 janv. 2009 à 21:28
8 janv. 2009 à 21:28
salut,
Alain ne m'en voudra pas de te répondre à sa place, c'est une FAQ.
Alain ne m'en voudra pas de te répondre à sa place, c'est une FAQ.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
8 janv. 2009 à 21:33
8 janv. 2009 à 21:33
Pas de problème Dalida.
Et meilleurs voeux 2009 en passant
Et meilleurs voeux 2009 en passant
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
9 janv. 2009 à 09:14
9 janv. 2009 à 09:14
salut Alain,
santé, chance, bonheur, et tout, et tout…
-:o)
santé, chance, bonheur, et tout, et tout…
-:o)
Woody69
Messages postés
125
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
22 mars 2012
9
9 janv. 2009 à 09:38
9 janv. 2009 à 09:38
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
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
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
9 janv. 2009 à 09:46
9 janv. 2009 à 09:46
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 :
et dans la FAQ on ne t'a pas dit que c'est réservé aux sessions !!!
et on t'explique :
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.
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.
Woody69
Messages postés
125
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
22 mars 2012
9
9 janv. 2009 à 09:59
9 janv. 2009 à 09:59
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 ?
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 ?
Woody69
Messages postés
125
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
22 mars 2012
9
10 janv. 2009 à 15:32
10 janv. 2009 à 15:32
Super ça fonctionne enfin !
Merci et bonne continuation à tous !!
Merci et bonne continuation à tous !!
js95
Messages postés
773
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2014
354
18 août 2010 à 16:48
18 août 2010 à 16:48
Je viens de tester ce script sur mon site internet, malheureusement je constate que la déconnexion ne se produit pas :
-> la fenêtre de connexion s'affiche grâce à ce script mais en cliquant sur Annuler il n'y a pas de déconnexion, quand je retape l'adresse du dossier protégé, la page s'affiche à nouveau.
Je ne vois vraiment pas en quoi ce script établit une déconnexion, je l'ai pourtant copié exactement, j'ai fait ce qui a été dit plus haut, rien à faire !
-> la fenêtre de connexion s'affiche grâce à ce script mais en cliquant sur Annuler il n'y a pas de déconnexion, quand je retape l'adresse du dossier protégé, la page s'affiche à nouveau.
Je ne vois vraiment pas en quoi ce script établit une déconnexion, je l'ai pourtant copié exactement, j'ai fait ce qui a été dit plus haut, rien à faire !
js95
Messages postés
773
Date d'inscription
samedi 14 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2014
354
31 août 2010 à 10:03
31 août 2010 à 10:03
A mon avis ce script ne marche pas sur tous les serveurs, et on ne peut rien faire, les variables $_SERVER sont en lecture seule...
A mon avis, ce script devait marcher mais les navigateurs ont évolué depuis l'année dernière, et ça ne marche plus. Je dis ça parce que j'ai un bon livre de 2009 pour créer des sites internet, et j'ai dû modifier un script utilisé dedans pour qu'il marche (la solution de 2009 ne marchait que sous Safari), parce que les navigateurs actuels ne se laissent plus berner par les scripts.
A mon avis, ce script devait marcher mais les navigateurs ont évolué depuis l'année dernière, et ça ne marche plus. Je dis ça parce que j'ai un bon livre de 2009 pour créer des sites internet, et j'ai dû modifier un script utilisé dedans pour qu'il marche (la solution de 2009 ne marchait que sous Safari), parce que les navigateurs actuels ne se laissent plus berner par les scripts.