Comprend pas, fonctionne pas setcookie

Eléphant du PHP | 129 Messages

25 mai 2009, 14:55

Bonjour,
J'arrive pas a comprendre pourquoi le setcookie ne s'enregistre pas.
J'essai de garder le pseudo et mot de pass du membre dans un cookie, malgrer mes multiple tantative, aucun moyen d'y arriver.
Vous avez peut être une idée sur la question, merci de votre aide !

Ma page connection.php
L'utilisateur entre son pseudo et mot de pass.
Il active se souvenir.
<?php
session_start();
include("includes/identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
//Je vérifi si le membre est pas déjà connecter.
if (isset($_SESSION['pseudo']))
{
echo '<p>Tu est déjà connecter.</p></div></body></html>';
exit();
}
?>
<form method="post" action="ok.php">
Connexion :
<p>
<label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
<label for="password">Mot de Passe :</label><input type="password" name="password" id="password" /><br />
</p>
<p><input type="submit" value="Connexion" /></p>
 <label>Se souvenir de moi ?</label><input type="checkbox" name="souvenir" /><br />
</form>
</div>
Ma page ok.php
Je vérifier avant si le membre a bien rentrer les bonne information et la je créer le cookie.
session_start();
if (empty($_POST['pseudo']) || empty($_POST['password']) )
{
        $message = '<p>Erreur tous les champs ne son pas rempli
        Cliquez <a href="connexion.php">ici</a> pour revenir</p>';
}
else
{
        //Acces interdit membre déjà conncté
        if (isset($_SESSION['pseudo'])) 
        {
                $message ='<p>Tu est déjà connecter</p>';
        }
        else // Autorisation ok : il reste à voir le mot de passe
        {
        include("includes/identifiants.php");
        mysql_connect($adresse, $nom, $motdepasse);
        mysql_select_db($database);
       
       
        //On protège les données
        $pseudo = mysql_real_escape_string($_POST['pseudo']);
        $password = mysql_real_escape_string($_POST['password']);
        
        $requete1 = mysql_query('SELECT membre_mdp, membre_id, membre_rang 
        FROM forum_membres WHERE membre_pseudo = "'.$pseudo.'"') 
        or die (mysql_error());
        $data1 = mysql_fetch_assoc($requete1);
 
       
        if ($data1['membre_mdp'] == md5($password)) // Acces OK !
        {
                $_SESSION['pseudo'] = $pseudo;
                $_SESSION['level'] = $data1['membre_rang'];
                $_SESSION['id'] = $data1['membre_id'];

if (isset($_POST['souvenir']))
{
$expire = time() + 365*24*3600;
setcookie('membre_id', $_SESSION['pseudo'], $expire);
setcookie('membre_mdp', $_SESSION['password'], $expire);  
}
echo '<script type="text/javascript">window.location= "index.php"</script>';
          }
          else
         // Acces pas OK ! 
      {
                $message = '<p>Erreur pendant votre identification.
                Le mot de passe ou le pseudo n est pas correcte.
                Cliquez <a href="connexion.php">ici</a> ';
          }
          }
}
?>

Eléphant du PHP | 245 Messages

25 mai 2009, 16:39

setcookie("membre_id", $_SESSION['pseudo'], time()+ 1*365*24*60*60,"/","nomdomaine.com",0);
setcookie("membre_mdp", $_SESSION['password'], time()+ 1*365*24*60*60,"/","nomdomaine.com",0);
essaie toujours ça...

Eléphant du PHP | 129 Messages

25 mai 2009, 16:56

Merci de ton aide Enneite.
Il garde toujours pas le cookie.
Je me demande s'il faut pas avant faire le seetcookie dans la page connection.php

Mammouth du PHP | 991 Messages

25 mai 2009, 18:02

tu as pas désactivé les cookies dans ton naviguateur ?
DevOps, Symfony4, Hoa

Eléphant du PHP | 129 Messages

25 mai 2009, 18:17

non Thehawk !
J'arrive vraiment pas à comprendre, je suis sur que je me plante quelque part.
Le cookie se créer mais il ne garde sans doute pas le mot de pass, car des que je ferme la page internet, et que j'attend un petit 15 minute, je relance et la je suis pas reconnu.

Mammouth du PHP | 991 Messages

25 mai 2009, 18:24

tu as pas de données avant le session_start() ? car les cookies se font avant l'envoi des en-tetes (enfin de mémoire)

Bonne journée Hawk.
DevOps, Symfony4, Hoa

ViPHP
ViPHP | 1136 Messages

25 mai 2009, 18:47

Salut ,

comment vérifies tu tes cookies ?

comment sais tu qu'il ne s'enregistrent pas ou mal ?
lorsque tu réouvre ,ton navigateur , montre nous la partie de ton code qui réinjecte les données contenues dans les cookies vers la session .

Utilises tu un outil du style firebug pour pour vérifier si tes cookies sont effectivement mal enregistrés ?

Ch.

Eléphant du PHP | 129 Messages

26 mai 2009, 09:38

Merci à tous pour votre aide :D
Alors le cookie se créer bien, maintenant je n'est aucune idée si enregistre le mot de pass, pour le pseudo ok, j'ai fait un echo cookie et la il affiche le pseudo.
Voila comment je vérifi ensuite.
<?php
if (isset ($_COOKIE['membre_id']) && !isset ($_SESSION['pseudo']) && !isset ($_COOKIE['membre_mdp']) && !isset ($_SESSION['password']))
{
$_SESSION['pseudo'] = $_COOKIE['membre_id']; 
$_SESSION['password'] = $_COOKIE['membre_mdp'];
}
if (isset ($_COOKIE['membre_id']) && isset ($_SESSION['pseudo']) && isset ($_COOKIE['membre_mdp']) && isset ($_SESSION['membre_mdp']))
{
}
if (!isset ($_COOKIE['membre_id']) && !isset ($_SESSION['pseudo']) && !isset ($_COOKIE['membre_mdp']) && !isset ($_SESSION['password']))
{
}
?>

Eléphant du PHP | 129 Messages

28 mai 2009, 12:47

Un petit up !
Merci...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 mai 2009, 16:46

Ca me parait pas très logique c't'histoire....
<?php
if (isset ($_COOKIE['membre_id']) && !isset ($_SESSION['pseudo']) && !isset ($_COOKIE['membre_mdp']) && !isset ($_SESSION['password']))
{
$_SESSION['pseudo'] = $_COOKIE['membre_id'];
$_SESSION['password'] = $_COOKIE['membre_mdp'];
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...