Bonjour à tous,
je voudrai savoir coment détruire les sessions lorsque l'on s'st connecté avec HTTP HEADER. Ce qui permettrai à mes membres de pouvoir se déloguer sans devoir éteindre leur navigateur.
Merci de votre aide
Version imprimable
Bonjour à tous,
je voudrai savoir coment détruire les sessions lorsque l'on s'st connecté avec HTTP HEADER. Ce qui permettrai à mes membres de pouvoir se déloguer sans devoir éteindre leur navigateur.
Merci de votre aide
Ce que tu dis ne veut rien dire.
A+
Tu pourrais créer un lien (sur bouton, par exemple) vers un fichier nommé deconnexion.php
Dans ce fichier :
Mais KiLVaiDeN a raison, quel Intérêt ?Code:
1
2
3
4 <?php session_destroy(); header("Location: la_page_que_tu_veux.php); ?>
Ben en fait je me connecte au site sous cette forme :
mais je ne sait pas commet faire pour détruire la session créer !!Code:
1
2
3
4
5
6 $act = $HTTP_GET_VARS['act']; if ($act=="relogin" and relogin()==0) { Header('WWW-Authenticate: Basic realm="Mon site"'); Header("HTTP/1.0 401 Unauthorized"); }
C'est ton site ?
oui c'est le mien
Lorsque tes membres sont se loggent pour initier une session, comment est-elle formulée , on peut voir le code/origine de ta session ?
voici le code des fonction que j'utilise
MerciCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139 //------------------------------------------------------------------------ // Fonctions pour autentification générale //------------------------------------------------------------------------ function logonok($level=0) { global $root,$userlogin; if (LOGINTYPE!=1) { // Authentification HTTP if (isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['PHP_AUTH_PW'])) { $res=mysql_query("SELECT * FROM act_user WHERE login='".$_SERVER['PHP_AUTH_USER']."' AND passw='".$_SERVER['PHP_AUTH_PW']."'"); if (mysql_num_rows($res)!=0) { $row = mysql_fetch_array($res); if ($row["level"]>=$level) { $userlogin = $_SERVER['PHP_AUTH_USER']; recharger_solde(); return $row["level"]; } else {return 0;} } else { return 0; } } elseif ($level <= PUBLIC_LEVEL) { return PUBLIC_LEVEL; } else { return 0; } } else { // Autentification PHP if ($_REQUEST['login']!="") // si on présente un login, on le teste de suite { $userid = 0; $userlevel=CheckUser($_REQUEST['login'],$_REQUEST['passwd'],$userid); if($userlevel==0) { header("Location: ".$root."/login.php?cas=1&uri=".urlencode($_SERVER['REQUEST_URI'])); die(); } else { $md5=md5($_REQUEST['login'].$_REQUEST['passwd']); if ($_REQUEST['saved']=='yes') $duree = time()+(60*60*24)*5; else $duree = null; setcookie('md5',$md5,$duree,$root); setcookie('userid',$userid,$duree,$root); $niveau = $userlevel; $userlogin = $_REQUEST['login']; } } elseif(isset($_COOKIE['userid']) and isset($_COOKIE['md5'])) { $niveau = CheckMD5($_COOKIE['userid'],$_COOKIE['md5']); // mets à jour $userlogin if ($niveau < $level) $niveau = 0; } elseif ($level <= PUBLIC_LEVEL) { $niveau = PUBLIC_LEVEL; // ne pas (re)positionner userlogin } else { header("Location: ".$root."/login.php?cas=2&uri=".urlencode($_SERVER['REQUEST_URI'])); die(); } recharger_solde(); return $niveau; } } //------------------------------------------------------------------------ // Fonctions pour autentification HTTP //------------------------------------------------------------------------ function login($path) // Uniquement utilisé par authentification { global $root; if (LOGINTYPE!=1) { if (!isset($_SERVER['PHP_AUTH_USER']) and !isset($_SERVER['PHP_AUTH_PW'])) { Header('WWW-Authenticate: Basic realm="Monsite"'); Header("HTTP/1.0 401 Unauthorized"); open_page("Gestion des accès",$path); echo '<TABLE width="100%" height="50%"><tr><td align="center">'."\n"; echo "<b>Les données plus détaillées ne sont accessibles qu'aux utilisateurs enregistrés<br><br>\n"; echo "<b>Veuillez entrer votre code utilisateur et votre mot de passe !</b><br><br>\n"; echo '<a href="javascript:history.back()"><Retourner à la page précédente></a></p>'."\n"; echoln('<p><a href="'.$root.'/acces.php">Voir les conditions d\'accès à la partie privée du site</a></p>'); echo "</td></tr></TABLE>\n"; close_page(); exit; } else { open_page("Gestion des accès",$path); echo '<TABLE width="100%" height="50%"><tr><td align="center">'."\n"; echo "<b>Désolé, vous ne possédez pas le niveau d'accès suffisant pour accéder à cette page !</b><br><br>\n"; echo '<a href="javascript:history.back()"><Retourner à la page précédente></a></p>'."\n"; echo '<p>ou</p>'; echo '<p><a href="'.$root.'/index.php?act=relogin"><Vous connecter à nouveau></a></p>'."\n"; echo "</td></tr></TABLE>\n"; echoln( '<p><a href="'.$root.'/acces.php">Voir les conditions d\'accès à la partie privée du site</a></p>'); close_page(); exit; } } else { header("Location: ".$root."/login.php?cas=3&uri=".urlencode($_SERVER['REQUEST_URI'])); die(); } } //------------------------------------------------------------------------ function relogin() // test juste si le login est ok sans vérifier le level { if (!isset($_SERVER['PHP_AUTH_USER']) and !isset($_SERVER['PHP_AUTH_PW'])) return 0; $db=con_db(); $res=mysql_query("SELECT * FROM act_user WHERE login='".$_SERVER['PHP_AUTH_USER']."' AND passw='".$_SERVER['PHP_AUTH_PW']."'",$db); if (mysql_num_rows($res)!=0) {return 1;} else {return 0;} } //------------------------------------------------------------------------
Il n'y a beaucoup d'alternatives à ton probléme.
Possible en envoyant une erreur 401 au navigateur mais celà reste de la bidouille.
Il serait interressant de créer un autre fichier qui comprendrait une requête inverse, de façon à cour-circuiter le processus, qui sait si celà effacera le cache d'identification ?
Exemple :
Lien ou bouton vers un fichier de déconnexion qui comprend le même fichier d'identification mais avec une requete batarde:
De cette façon, le résultat sera forcemment nul et devrait renvoyer dans l'ordre des choses l'erreur 401 :Code:
1
2
3
4
5
6
7
8
9 //........ $res=mysql_query("SELECT * FROM act_user WHERE login!='".$_SERVER['PHP_AUTH_USER']."' AND passw!='".$_SERVER['PHP_AUTH_PW']."'"); //......
Header("HTTP/1.0 401 Unauthorized");
Maintenant, je ne sais si celà va supprimer le cache.
Sinon, il restera une troisième et dernière solution...
ps :Je t'avouerais que le systéme de gestion de session php est bcp plus maléable et tout autant efficace.
désolé ça ne marche pas, merci quant même pour ton aide, je vais voirr pour tout refaire avec les sessions php