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 27/03/2007, 17h08   #1
Membre régulier
 
Inscription : février 2006
Messages : 237
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2006
Messages : 237
Points : 84
Points : 84
Par défaut problème double login

Bonjour a tous,

J'ai une partie extranet et admin sur mon site, lorsque je souhaite me connecter à ces 2 modules, j'utilise les sessions classiques, mais bien souvent, il faut que je tape 2 fois mon login et mot de passe pour pouvoir me connecter sinon il me dit que mon mot de passe n'existe pas.

J'ai fait le test sur des postes différents mais toujours pareil. J'arrive sur ma page de loggue, j'entre login et mdp, je me fais jeter, je retape mon loggue et mot de passe et la ça passe.

Je trouve ça bizarre, avez vous une idée?

D'avance merci
taka10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 10h06   #2
Membre régulier
 
Inscription : février 2006
Messages : 237
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2006
Messages : 237
Points : 84
Points : 84
alors personne pour mon problème??

Je me demande si c'est pas parce que j'ouvre une session lorsque je me connecte sur la partie admin de mon site et que lorsque j'essaie d'aller sur l'extranet, il utilise la même session et forcément, il n'arrive pas à se logguer?
taka10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 10h53   #3
Membre régulier
 
Inscription : février 2006
Messages : 237
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2006
Messages : 237
Points : 84
Points : 84
J'ai mieux identifié le problème , mais je ne sais toujours pas comment le résoudre:
Lorsque je veux connecter sur l'admin ou sur l'extranet, j'utilise à chaque fois la même session et les mêmes variables de session, donc tant que la session n'est pas détruite, je ne peux pas me logguer sur l'extranet par exemple si j'étais loggué sur l'admin. Le problème c'est que si je détruit la session, je me loggue bine sur l'extranet mais je ne suis plus loggué sur l'admin.

Comment faire pour pouvoir se loguer sur les 2 sans devoir supprimer la session de l'autre?

voici le fichier de fonction de session:
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
 
<?php
 
require_once("".chemin."cls_mysql.php");
//require("/usr/local/etc/httpd/htdocs/classes/cls_mysql.php");
 
class ClsAuth {
 
    var $id_session = ""; 
	var $departement = 0;
	var $idacces = 0;
	var $msg="";
 
	function InitSes (){
		session_start();
		$this->id_session = session_id();
		return true;
	}
 
	function VerifDbAcces($user,$mpass,$table_acces='acces',$chp_login='login',$chp_pass='pass')
	{
		$db = new DataBase; // Instanciation de l'objet $db 
 
		if($db->DbConnect())
		{ // accès à la méthode DbConnect de l'objet
  			$sql="select * from ".$table_acces." where ".$chp_login." ='".$user."' and ".$chp_pass." = '".$mpass."'";
			if($tab = $db->DbSelect ($sql)){
				 foreach($tab as $element) {					
						if($element[$chp_login]==$user && $element[$chp_pass]==$mpass)
						{
							$this->departement = $element[departement];
							$this->idacces = $element[id_acces];
							$db->DbClose();
							return true;
 
						}
				}
			}
			else {
				$db->DbClose();
				return false;
			}
 
		}
		else {
			$db->DbClose();
			return false;
		}
	}
 
	function registerSessionVar($valuel,$valuemp,$table_acces="acces",$chp_login="login",$chp_pass="pass")
	{
		if($valuel!= "" && $valuemp!= ""){
			if( $this->VerifDbAcces($valuel,$valuemp,$table_acces,$chp_login,$chp_pass)==true){
				session_register('login') or die("1 - Echec enregistrement variable session");
				session_register('pass') or die("1 - Echec enregistrement variable session");
				return true;
			}
			else
				return false;			
		}
		else
			return false;
	}
 
	function VerifSessionVar($valuel,$valuemp,$table_acces="acces",$chp_login="login",$chp_pass="pass")
	{
		if( $valuel!="" && $valuemp!="" ){
			if( $this->VerifDbAcces($valuel,$valuemp,$table_acces,$chp_login,$chp_pass) ){
				return true;
			}
			else return false;
		}
		else return false;
	}
 
	function VideSessionVar()
	{
		session_destroy();
		return true;
	}
 
};
?>
et voici le fichier de loggue sur l'extranet:
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
 
<?php
require ("../include/definition.php");
 
$myses = new ClsAuth;
if( $myses->InitSes() ) {
	if($auth==1){
		if($myses->registerSessionVar($login,$pass,"acces_extranet")==true)
		{
			//On crée l objet de connexion à la base
			$db=new DataBase;
			$db->DbConnect();
 
			$tr = $db->DbQuery("SELECT * FROM acces_extranet WHERE login='".$login."' AND pass='".$pass."'");
			$tacces=mysql_fetch_array($tr);
 
			$datheure=date("Y-m-d H:i:s",time());
			$res=$db->DbQuery("UPDATE acces_extranet SET derniere_connexion='".$datheure."' where id_acces='".$tacces[id_acces]."'");
 
			$adr_index2=$che."extranet/index2.php";
			$db->DbClose();
			if($_POST['url']!="") $adr_index2=urldecode($url);
			echo "<script type=\"text/javascript\">\n
			window.top.location.href = \"".$adr_index2."\";\n
			</script>\n
			";
			exit();
		}
		else 
		{
			$myses->VideSessionVar();
			$erreur="Votre mot de passe n'existe pas veuillez le ressaisir";
		}
	}
	if( $myses->VerifSessionVar($login,$pass,"acces_extranet") )
	{
		$myses->VideSessionVar();
	}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Espace collaboratif - identification</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../css/admin.css" rel="stylesheet" type="text/css">
</head>
<SCRIPT>
<!--
function sf(){document.form1.login.focus();}
// -->
</SCRIPT>
 
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"  onload=sf()>
<table width="300" border="0" cellpadding="0" cellspacing="0" class="loginboitecentre">
  <tr> 
    <td colspan="2" rowspan="3" valign="top"> <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr> 
          <td class="loginbordurenoire"><img src="<?php echo $che;?>tab_bord/images/cadenas_login.gif" width="31" height="34" align="absmiddle">Espace collaboratif&nbsp;<?php if (isset($libelle_url_territoire)) echo $libelle_url_territoire; else echo $nom_site;?></td>
        </tr>
        <tr> 
          <td></td>
        </tr>
        <tr> 
          <td><img src="images/spacer.gif" width="1" height="1"></td>
        </tr>
        <tr> 
          <td height="100%" class="loginbordurenoire2"><table width="100%" border="0" cellpadding="0" cellspacing="7">
              <?php if ($erreur<>"")
		  		{
				?>
            <tr> 
              <td><font color="#CC3300" size="2"><strong><?php echo $erreur;?></strong></font></td>
            </tr>
			<?php
				}
			?>
              <tr> 
                <td><strong>Veuillez vous identifier :</strong></td>
              </tr>
              <tr>
			  <form name="form1" method="post" action="index.php">
                <td height="18"><table width="100%" border="0" cellspacing="0" cellpadding="5">
                    <tr> 
                      <td width="28%" colspan="2">Utilisateur</td>
                      <td width="72%" colspan="2" class="trebuchetnoir"><input type="text" name="login" size="25" maxlength="25" value="<?php echo $_GET['login'];?>"></td>
                    </tr>
                    <tr> 
                      <td colspan="2">Mot&nbsp;de&nbsp;passe</td>
                      <td colspan="2"><input name="pass" type="password" id="pass" size="25" maxlength="25" value="<?php echo $_GET['password'];?>"></td>
                    </tr>
                    <tr> 
                      <td>&nbsp;</td>
                      <td><input name="auth" type="hidden" id="auth" value="1">
					  <input name="url" type="hidden" id="url" value="<?php echo urlencode($_GET['url']);?>">					  </td>
                      <td align="right"><a href="#" onClick="document.form1.submit()"><font color="#4DA751" size="3"><strong>Entrez</strong></font></a></td>
                        <td><input type="image" src="<?php echo $che;?>tab_bord/images/boutons/vert.gif" name="Submit" value="  "></td>
                    </tr>
                  </table></td>
				</form>
              </tr>
            </table></td>
        </tr>
      </table></td>
    <td width="30" height="5">&nbsp;</td>
  </tr>
  <tr> 
    <td height="100%" class="loginboiteombre">&nbsp;</td>
  </tr>
  <tr> 
    <td class="loginboiteombre">&nbsp;</td>
  </tr>
  <tr> 
    <td width=></td>
    <td width="300" height="10" class="loginboiteombre">&nbsp;</td>
    <td class="loginboiteombre">&nbsp;</td>
  </tr>
</table>
</body>
</html>
taka10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 11h32   #4
Invité de passage
 
Inscription : mars 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 2
Points : 2
Points : 2
Bonjour !

Ton problème vient du fait qu'effectivement, tu utilises la même session pour ton module extranet et pour ton module admin. Je te conseille donc de jeter un oeil du côté de session_name(), qui te permettra de définir un nom de session spécifique à chacun de tes deux modules, et donc d'avoir deux sessions en parallèle.

Ex :
- Se logger sur l'extranet :
session_name( "extranet" );
session_start();
- Se logger sur l'admin :
session_name( "admin" );
session_start();

En espérant avoir pu t'aider,

Alh.
Alheran est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 11h39   #5
Membre régulier
 
Inscription : février 2006
Messages : 237
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2006
Messages : 237
Points : 84
Points : 84
merci ça devrait régler mon problème, je ne peux pas tester pour l'instant car mon client est en démo toute la journée, donc ce que j'ai fais c'est que si tu te loggue sur l'extranet , il tue d'abord la session existante et inversement, ça évite le double loggue.
Dès que j'ai testé ta solution, je viendrais la mettre ici pour d'autres.
taka10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web