IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Connexion avec HTTP HEADER


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 148
    Points : 74
    Points
    74
    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

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Ce que tu dis ne veut rien dire.

    A+
    K

  3. #3
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Tu pourrais créer un lien (sur bouton, par exemple) vers un fichier nommé deconnexion.php

    Dans ce fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  4. #4
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 148
    Points : 74
    Points
    74
    Par défaut
    Ben en fait je me connecte au site sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !!

  5. #5
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    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.

  6. #6
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 148
    Points : 74
    Points
    74
    Par défaut
    oui c'est le mien

  7. #7
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    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.

  8. #8
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 148
    Points : 74
    Points
    74
    Par défaut
    voici le code des fonction que j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  10. #10
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 148
    Points : 74
    Points
    74
    Par défaut
    désolé ça ne marche pas, merci quant même pour ton aide, je vais voirr pour tout refaire avec les sessions php

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/12/2009, 23h21
  2. [MySQL] Connexion à la BDD impossible + problèmes avec mes headers
    Par Terni dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/08/2007, 15h31
  3. [HTTP] Connexion avec autorisation.
    Par jambonstar dans le forum Delphi
    Réponses: 1
    Dernier message: 07/03/2007, 14h54
  4. [WSAD5] Connexion avec une base Lotus
    Par mickey dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 11/03/2004, 08h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo