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 :

problème double login


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2006
    Messages : 321
    Points : 142
    Points
    142
    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

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2006
    Messages : 321
    Points : 142
    Points
    142
    Par défaut
    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?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2006
    Messages : 321
    Points : 142
    Points
    142
    Par défaut
    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 : 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
     
    <?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 : 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
     
    <?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>

  4. #4
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    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.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2006
    Messages : 321
    Points : 142
    Points
    142
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [sql server 2005 express] problème de login
    Par Blo0d4x3 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/02/2006, 23h26
  2. [Cookies] problème cookie login automatique
    Par t-die dans le forum Langage
    Réponses: 1
    Dernier message: 26/01/2006, 16h48
  3. [MySQL] Problème double insertion dans BDD
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 34
    Dernier message: 28/12/2005, 00h09
  4. Problème de login avec mysql
    Par Michaël dans le forum Installation
    Réponses: 4
    Dernier message: 01/11/2005, 18h53
  5. Problème de login avec Postgresql
    Par maddog2032 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 27/04/2005, 13h19

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