Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
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 01/09/2006, 15h39   #1
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 86
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : août 2006
Messages : 86
Points : 29
Points : 29
Par défaut Connexion avec HTTP HEADER

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
breizhgen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 15h42   #2
Expert Confirmé
 
Avatar de KiLVaiDeN
 
Inscription : octobre 2003
Messages : 2 714
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 714
Points : 2 689
Points : 2 689
Ce que tu dis ne veut rien dire.

A+
__________________
K
KiLVaiDeN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 15h48   #3
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Tu pourrais créer un lien (sur bouton, par exemple) vers un fichier nommé deconnexion.php

Dans ce fichier :
Code :
1
2
3
4
<?php
session_destroy();
header("Location: la_page_que_tu_veux.php);
?>
Mais KiLVaiDeN a raison, quel Intérêt ?
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 18h08   #4
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 86
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : août 2006
Messages : 86
Points : 29
Points : 29
Ben en fait je me connecte au site sous cette forme :

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");
		}
mais je ne sait pas commet faire pour détruire la session créer !!
breizhgen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 18h12   #5
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
C'est ton site ?
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 19h50   #6
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 86
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : août 2006
Messages : 86
Points : 29
Points : 29
oui c'est le mien
breizhgen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 20h03   #7
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Lorsque tes membres sont se loggent pour initier une session, comment est-elle formulée , on peut voir le code/origine de ta session ?
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 20h35   #8
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 86
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : août 2006
Messages : 86
Points : 29
Points : 29
voici le code des fonction que j'utilise

Code :
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()">&lt;Retourner à la page précédente&gt;</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()">&lt;Retourner à la page précédente&gt;</a></p>'."\n";
			echo '<p>ou</p>';
			echo '<p><a href="'.$root.'/index.php?act=relogin">&lt;Vous connecter à nouveau&gt;</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;}
	}
 
//------------------------------------------------------------------------
Merci
breizhgen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 22h16   #9
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
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:

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']."'");	

//......
De cette façon, le résultat sera forcemment nul et devrait renvoyer dans l'ordre des choses l'erreur 401 :
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.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 22h56   #10
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 86
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : août 2006
Messages : 86
Points : 29
Points : 29
désolé ça ne marche pas, merci quant même pour ton aide, je vais voirr pour tout refaire avec les sessions php
breizhgen est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h38.


 
 
 
 
Partenaires

Hébergement Web