Connection espace membre qui marche sur FF pas IE

Eléphant du PHP | 61 Messages

27 nov. 2006, 23:06

Bonsoir à tous je rencontre actuellement un problème avec mon scipt de connection a ma section membre, sous Firefox tout marche, quand je met de mauvais identifiant j'ai le message d'erreur qui s'affcihe et avec les bon identifiants cela me redirige vers la bonne page, cependant aucune des deux action cité ci-dessus marche sur IE
Voilà mon code de connection
<?php

if (isset($_POST['envoyer']) && $_POST['envoyer']=='Envoyer' && $_SESSION['logged'] == false)
{
    if ( isset($_POST['login']) && isset($_POST['pwd']) )
        {
                include('../script/connect_db.php');
                $sql = 'SELECT idmembre,login,pwd_md5,actif FROM membre WHERE login=\''.htmlentities($_POST['login']).'\' AND pwd_md5=\''.md5($_POST['pwd']).'\'';
                $req = mysql_query($sql);
                mysql_close();
                $res = mysql_fetch_array($req);
             $res_1=mysql_num_rows($req);

        if ($res_1 == 1)
                {       
                        if( $res['actif'] == 0 )
                        {
                                $erreur = '<p1>Votre compte n\'est pas encore activer<br></p1>';
                        }
                       
                        else
                        {
                                if (isset($_POST['connection_auto']) && $_POST['connection_auto'] == 'on')
                {
                        $expire = time() + 3600 * 24 * 365;
                                        setcookie('pseudo', $_POST['login'], $expire);
                        setcookie('mot_passe', md5($_POST['pwd']), $expire);
                 }
               
                                session_start();
                               
                                $_SESSION['logged'] = true;
                $_SESSION['login'] = $res['login'];
                                $_SESSION['idmembre'] = $res['idmembre'];
                header('Location: index.php');
                exit();
                        }
                }
               
                else    
                {
            $erreur = '<p1>Pseudo ou mot de pass incorrect<br></p1>';
        }
    }
}

?>
Modifié en dernier par analfabete le 28 nov. 2006, 13:40, modifié 1 fois.

ViPHP
ViPHP | 1961 Messages

27 nov. 2006, 23:22

Bonsoir,

Ta ligne session_start(); devrait se trouver en tête du script et pas là ou elle se trouve.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 61 Messages

27 nov. 2006, 23:24

Cela n'a rien fais :cry:

ViPHP
ViPHP | 1961 Messages

27 nov. 2006, 23:29

Re,

Tu est sur que $_SESSION['logged'] contien QQ chose à l'entrée du script?
Est tu sur que tu rentres dans le second if()?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 61 Messages

28 nov. 2006, 12:54

Cela devient vraiment enigmatique, j'ai nettoyer les variable qui ne servait a rien et j'ai reduit un peu le code de facon que celui marche toujours sur firefox--> erreur ou connection, cependant celui-ci ne marche pas sur IE, c'est un vrai casse tête
Voilà mon code et celui du formulaire qui se trouve sur la meme page :
<?php
if (isset($_POST['envoyer']))
{
    if ( isset($_POST['login']) && isset($_POST['pwd']) ) 
	{
		include('../script/connect_db.php');
		$sql = 'SELECT idmembre,login,pwd_md5,actif FROM membre WHERE login=\''.htmlentities($_POST['login']).'\' AND pwd_md5=\''.md5($_POST['pwd']).'\'';
		$req = mysql_query($sql);
		mysql_close();
		$res = mysql_fetch_array($req);
   		$res_1=mysql_num_rows($req);

        if ($res_1 == 1) 
		{	
			if( $res['actif'] == 0 )
			{
				$erreur = '<p1>Votre compte n\'est pas encore activer<br></p1>';
			}
			
			else
			{
				/*if (isset($_POST['connection_auto']) && $_POST['connection_auto'] == 'on')
            	{
                  	$expire = time() + 3600 * 24 * 365;
					setcookie('pseudo', $_POST['login'], $expire);
                   	setcookie('mot_passe', md5($_POST['pwd']), $expire);
                 }	
				
            	$_SESSION['login'] = $res['login'];
				$_SESSION['idmembre'] = $res['idmembre'];*/
            	header('Location: index.php');
            	
			}
		}
		
		else 	
		{
    		$erreur = '<p1>Pseudo ou mot de pass incorrect<br></p1>';
    	}
    }
}
et le formulaire:
 <?php echo $erreur;?>
          <form action="connection.php" method="post">
            <p>
              <label>Pseudo</label>
              <input name="login" type="text" class="textfield" value="" size="16" maxlength="16"/>
            </p>
            <p>
              <label>Mot de pass</label>
              <input name="pwd" type="password" class="textfield" value="" size="16" maxlength="16"/>
            </p>
			            <p>
             Connexion automatique: <input type="checkbox" name="connection_auto" value="on" />

            </p>
			<br/>
            <p style="text-align:center; padding-top:6px;">
              <input name="envoyer" src="../img/bouton_envoyer.png" type="image" value="Envoyer"/>
            </p>
            <p style="font-size:10px; text-align:center;"><em><a href="oubli_pwd.php">Mot de pass oublié ?</a><br/>
              <a href="inscription.php">Je m'inscrit !</a></em></p>
          </form>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 nov. 2006, 13:00

Si, au sommet de ton script, tu fait
print_r($_POST)
, tu obtients des différences entre IE et FF ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 61 Messages

28 nov. 2006, 13:05

Oui voila ce que j'obtiens sur Firefox:
Array ( [login] => analfabete [pwd] => a1ac3agc [envoyer_x] => 45 [envoyer_y] => 11 [envoyer] => Envoyer )
et sous IE:
Array ( [login] => analfabete [pwd] => a1ac3agc [envoyer_x] => 31 [envoyer_y] => 9 ) 

Eléphant du PHP | 61 Messages

28 nov. 2006, 13:08

deja le nouveau code ne marche plus j'y omprend rien: lorsque mon utilisateur clique sur envoyer le isse($_POST[envoyer] ) devrait repondre true

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 nov. 2006, 13:10

Et tu ne vois pas l'erreur ? ;)

Que va-t-il en être du test sur l'existence de $_POST['envoyer'] ?


Je pense qu'il faut donc modifier le test de vérification de soumission du formulaire en vérifiant la présence de $_POST['envoyer_x'] et $_POST['envoyer_y'] plutot que $_POST['envoyer'] ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 61 Messages

28 nov. 2006, 13:21

Arf je recherche un tutorial sur les formulaires en php car je ne comprend pas à quoi correspond envoyer_x et envoyer_y :?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 nov. 2006, 13:35

Quand tu remplaces le input type submit par un input type image, tu envoi la position de la souris sur l'image plutot que le nom du input

C'est tout ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 61 Messages

28 nov. 2006, 13:39

Um daccord !
J'ai trouver la solution: me servir de isset($_POST) au départ, sa marche nickel et sa allège le code
Merci