Probleme cookies

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme cookies

Re: Probleme cookies

par zerodegre » 20 déc. 2011, 10:42

j'aimerais savoir si y a possibilité de bloquer le HTML avant la creation du cookies

je m'explique mon site est en 3 partie :

header.php
accueil.php
footer.php

mon espace membre :

index.php
deconnexion.php
connexion.php


le probleme est que le header est bourrer de html et lorsque je veux lancer la creation du cookies via la page deconnexion.php j'ai une erreur vu que le header charge avant la page deconnexion.php

y a t-il un moyen pour executer en 1 er la page deconnexion avant ce HEADER.php ???

Re: Probleme cookies

par zerodegre » 20 déc. 2011, 09:39

ouai je me doute ça m'est venue hier ;)

j'ai créer une page deconnexion et tuer toutes les taches
<?php
session_start();
session_unset();
session_destroy();
setcookie('user',NULL,time()+1);

header('Location: connexion.php');
exit();
?>
merci ;)

Re: Probleme cookies

par xTG » 20 déc. 2011, 08:53

Bah il faut supprimer le cookie à la déconnexion. :mrgreen:

Re: Probleme cookies

par zerodegre » 19 déc. 2011, 23:20

bon voila un autre probleme maintenant la connexion est bien automatique par recuperation des cookies mais le probleme est que je n'arrive plus a me deconnecter a chaque fois il me reconnecte voici ce que jai mit dans l'index.php il dois manquer quelque chose

<?php
session_start(); 

if(isset($_COOKIE['user']))
{
$_SESSION['username'] = $_COOKIE['user'];
}
?>

Re: Probleme cookies

par xTG » 19 déc. 2011, 11:16

Un autre sujet sur le thème qui a été résolu : php-debutant/connexion-automatique-t261041.html

Re: Probleme cookies

par zerodegre » 19 déc. 2011, 11:13

etant novice c un peu compliquer pour moi comment ferais tu ça par rapport a mon code sur le post précédent ???

Code : Tout sélectionner

<?php include('config.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href="<?php echo $design; ?>/style.css" rel="stylesheet" title="Style" /> <title>Connection</title> </head> <body> <div class="header"> <a href="<?php echo $url_home; ?>"><img src="<?php echo $design; ?>/images/logo.png" alt="Espace Membre" /></a> </div> <?php //Si lutilisateur est connecte, on le deconecte if(isset($_SESSION['username'])) { //On le deconecte en supprimant simplement les sessions username et userid unset($_SESSION['username'], $_SESSION['userid']); ?> <div class="message">Vous avez bien &eacute;t&eacute; d&eacute;connect&eacute;.<br /> <a href="<?php echo $url_home; ?>">Accueil</a></div> <?php } else { $ousername = ''; //On verifie si le formulaire a ete envoye if(isset($_POST['username'], $_POST['password'])) { //On echappe les variables pour pouvoir les mettre dans des requetes SQL if(get_magic_quotes_gpc()) { $ousername = stripslashes($_POST['username']); $username = mysql_real_escape_string(stripslashes($_POST['username'])); $password = stripslashes($_POST['password']); } else { $username = mysql_real_escape_string($_POST['username']); $password = $_POST['password']; } //On recupere le mot de passe de lutilisateur $req = mysql_query('select password,id from users where username="'.$username.'"'); $dn = mysql_fetch_array($req); //On le compare a celui quil a entre et on verifie si le membre existe if($dn['password']==$password and mysql_num_rows($req)>0) { //Si le mot de passe es bon, on ne vas pas afficher le formulaire $form = false; //On enregistre son pseudo dans la session username et son identifiant dans la session userid $_SESSION['username'] = $_POST['username']; $_SESSION['userid'] = $dn['id']; ?> <div class="message">Vous avez bien &eacute;t&eacute; connect&eacute;. Vous pouvez acc&eacute;der &agrave; votre espace membre.<br /> <a href="<?php echo $url_home; ?>">Accueil</a></div> <?php } else { //Sinon, on indique que la combinaison nest pas bonne $form = true; $message = 'La combinaison que vous avez entr&eacute; n\'est pas bonne.'; } } else { $form = true; } if($form) { //On affiche un message sil y a lieu if(isset($message)) { echo '<div class="message">'.$message.'</div>'; } //On affiche le formulaire ?> <div class="content"> <form action="connexion.php" method="post"> Veuillez entrer vos identifiants pour vous connecter:<br /> <div class="center"> <label for="username">Nom d'utilisateur</label><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /><br /> <label for="password">Mot de passe</label><input type="password" name="password" id="password" /><br /> <input type="submit" value="Connection" /> </div> </form> </div> <?php } } ?> <div class="foot"><a href="<?php echo $url_home; ?>">Retour &agrave; l'accueil</a> - <a href="http://www.supportduweb.com/">Support du Web</a></div> </body> </html>

Re: Probleme cookies

par xTG » 19 déc. 2011, 11:08

Si la détection du cookie se fait il faut recréer la session, sinon il est normal de ne pas avoir de session. ^^

Re: Probleme cookies

par zerodegre » 19 déc. 2011, 10:22

la le cookies reste bien dans firefox mais maintenant le prob c que a chaque fois que je quite le site et je reviens plus tard il faut se reloguer meme si le cookies est la jai du merder quelque part

Re: Probleme cookies

par xTG » 19 déc. 2011, 10:17

Tu parles bien du cookie et non de la session ?
Car les cookies de session sont détruits à la fermeture du navigateur firefox (c'est un comportement normal du navigateur), par contre les autres ne le sont pas tant qu'ils sont valides.

Re: Probleme cookies

par zerodegre » 18 déc. 2011, 21:53

bon voila apres pas mal de recherche je viens de me rendre compte que en mettant le code ci dessous dans le HEADER.PHP il ecrit bien le cookies mais le probleme maintenant et que lorsque je ferme firefox le cookies disparait.Pourquoi donc il ne laisse pas la session ouverte des la fermeture de firefox ?


voici le bout de code que jai mit dans le header.php et je n'est rien mit dans la page connexion.php


<?php
//On demarre les sessions pour l'espace membre
session_start();


if (isset($_POST['remember'])) {
setcookie('site', 'teste', (time() + 3600));
}

echo $_COOKIE['site']; 

Re: Probleme cookies

par zerodegre » 18 déc. 2011, 12:13

Je n'ai pas fait attention mais la encore c'est parce que tu envois des données au navigateur avant de faire le set cookie :
  //   echo 'pas utilisateur'; --> il faut virer ce echo ou le déplacer après le setcookie
  if (isset($_POST['remember'])) {
    setcookie('teste', 'moi', time() + 86400 /* Pour une journée */);
    echo 'cookie ajouté, il sera disponible au prochain chargement de la page';
  }
Et euh... quand tu ouvres la page, tu as bien l'attribut "remember" qui est envoyé en post ?

En principe comme ça tu devrais pouvoir définir le cookie... restera plus ensuite qu'à l'utiliser quand tu le trouves et que l'utilisateur n'est pas connecté :)

j'ai rectifié par ta commande mais toujours cette satané erreur et le cookie n'est pas créer, je commence a perdre espoire j'ai retourner le probleme de partout arfffff

Re: Probleme cookies

par Ryle » 18 déc. 2011, 12:01

Je n'ai pas fait attention mais la encore c'est parce que tu envois des données au navigateur avant de faire le set cookie :
  //   echo 'pas utilisateur'; --> il faut virer ce echo ou le déplacer après le setcookie
  if (isset($_POST['remember'])) {
    setcookie('teste', 'moi', time() + 86400 /* Pour une journée */);
    echo 'cookie ajouté, il sera disponible au prochain chargement de la page';
  }
Et euh... quand tu ouvres la page, tu as bien l'attribut "remember" qui est envoyé en post ?

En principe comme ça tu devrais pouvoir définir le cookie... restera plus ensuite qu'à l'utiliser quand tu le trouves et que l'utilisateur n'est pas connecté :)

Re: Probleme cookies

par zerodegre » 18 déc. 2011, 11:00

donc j'ai deplacé vers le haut comme tu ma dit mais la j'ai une belle erreur
comme ceci

<?php
include('config.php');
if (!empty($_COOKIE['teste']))
{
  echo 'cookie bien arrivé : utilisateur confirmé';
}
else
{
  echo 'pas utilisateur';
  if (isset($_POST['remember'])) {
    setcookie('teste', 'moi', time() + 86400 /* Pour une journée */);
  }
}

?>
pas utilisateur

Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files (x86)\VertrigoServ\www\site\header.php:36) in C:\Program Files (x86)\VertrigoServ\www\site\espace_membre\connexion.php on line 11

Re: Probleme cookies

par Ryle » 18 déc. 2011, 10:37

setcookie() définit un cookie qui sera envoyé avec le reste des en-têtes. Comme pour les autres en-têtes, ils doivent être envoyés avant toute autre sortie. Cela veut dire qu'il te faut appeler cette fonction avant tout envoi de code au navigateur (balise html, espaces, ou retours à la ligne).

Il faudrait donc déplacer ton bloc qui définit le cookie dans le bloc php que tu as en haut de ton script :
<?php
include('config.php');
// code à inclure ici par ex.
?>

Re: Probleme cookies

par zerodegre » 18 déc. 2011, 01:20

Toujour aucun enregistrement du cookie Je vous remet ma page entiere CONNEXION.PHP

Code : Tout sélectionner

<?php include('config.php'); ?> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td style="width:126px; height:117px;" align="left" valign="top"><img src="./images/cat_top_left.png" style="width:126px; height:117px;" alt="" border="0" /></td> <td width="100%" style="background-image:url(./images/cat_bk.jpg)" align="left"> <div valign="middle"><center> <strong><img src="images/spacer.gif" width="100" height="0" ><font color="white">Connexion à votre espace personnel</strong></div></font> </td> <td style="width:258px;" align="right" valign="top"><img src="./images/cat_top_right.png" style="width:258px; height:117px;" alt="" border="0" /></td> </tr> </table> <table cellpadding="0" cellspacing="0" border="0" width="100%" height="26" align="center"> <tr> <td valign="top" style="background-image:url(./images/cat_left.jpg)"> <img src="./images/cat_left.jpg" style="width:47px; height:22px;" alt="" border="0" /></td> <td width="100%" valign="top" style="background-image:url(./images/bk_cat.jpg)"> <?php //Si lutilisateur est connecte, on le deconnecte if(isset($_SESSION['username'])) { //On le deconecte en supprimant simplement les sessions username et userid unset($_SESSION['username'], $_SESSION['userid']); ?> <center><div class="titre3">Vous avez bien &eacute;t&eacute; d&eacute;connect&eacute;.</center><br /> <meta http-equiv="refresh" content="0; url=?page=espace_membre"/> <?php } else { $ousername = ''; //On verifie si le formulaire a ete envoye if(isset($_POST['username'], $_POST['password'])) { //On echappe les variables pour pouvoir les mettre dans des requetes SQL if(get_magic_quotes_gpc()) { $ousername = stripslashes($_POST['username']); $username = mysql_real_escape_string(stripslashes($_POST['username'])); $password = stripslashes(md5($_POST['password'])); } else { $username = mysql_real_escape_string($_POST['username']); $password = $_POST['password']; } //On recupere le mot de passe de lutilisateur $req = mysql_query('select password,id from users where username="'.$username.'"'); $dn = mysql_fetch_array($req); //On le compare a celui quil a entre et on verifie si le membre existe if($dn['password']==$password and mysql_num_rows($req)>0) { //Si le mot de passe es bon, on ne vas pas afficher le formulaire $form = false; //On enregistre son pseudo dans la session username et son identifiant dans la session userid $_SESSION['username'] = $_POST['username']; $_SESSION['userid'] = $dn['id']; ?> <center><div class="titre3">Vous avez bien &eacute;t&eacute; connect&eacute;. Vous allez etre redirigé vers votre espace membre.</center><br /><br /> <meta http-equiv="refresh" content="1; url=?page=espace_membre"/> <?php } else { //Sinon, on indique que la combinaison nest pas bonne $form = true; $message = 'l\'utilisateur ou le mot de passe que vous avez entr&eacute; est incorrecte.'; } } else { $form = true; } if($form) { //On affiche un message sil y a lieu if(isset($message)) { echo '<div class="message">'.$message.'</div>'; } //On affiche le formulaire ?> <?php if (!empty($_COOKIE['teste'])) { echo 'cookie bien arrivé : utilisateur confirmé'; } else { echo 'pas utilisateur'; if (isset($_POST['remember'])) { setcookie('teste', 'moi', time() + 86400 /* Pour une journée */); } } ?> <html> <table width="650" border="0" align="center"> <tr> <td align="center"><font color="white">Veuillez entrer vos identifiants pour vous connecter:</font></td> </tr> <tr><td>&nbsp;</td></tr> <form action="?page=connexion" method="post"> <div align="center"></div> <table width="350" border="0" align="center"> <p align="center"> </p><tr> <td width="10%" class="alt1"><font face="Verdana" ><font color="white">*</font><font color="red"> Nom d'utilisateur :</font></td> <td align="left" width="10%" class="alt2"><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /></td> </tr> <tr> <td width="10%" class="alt1"><font face="Verdana" ><font color="white">*</font><font color="red"> Mot de passe :</font></td> <td align="left" class="alt2"><input type="password" name="password" id="password" /></td> </tr> <table width="350" border="0" align="center"> <tr><td>&nbsp;</td></tr> <tr><td><input type="checkbox" name="remember" value="1" /> <font color="white">Se souvenir de moi</font></td></tr> <tr><td>&nbsp;</td></tr> <table width="400" border="0" align="center"> <tr><td align="center"> <input type="submit" value="Connexion" /> </td></tr> </form> </div> </table> <?php } } ?> </td> <td align="right" valign="top" style="background-image:url(./images/cat_right.jpg)"><img src="./images/cat_right.jpg" style="width:46px; height:22px;" border="0" /></td> </tr> </table> <table style="width:100%; height:24px;" border="0" cellpadding="0" cellspacing="0"> <tr> <td style="width:125px; height:151px;" valign="top"><img src="./images/cat_down_left.jpg" style="width:125px; height:151px;" alt="" border="0" /></td> <td width="100%" valign="top" style="background-image:url(./images/cat_down_bk.jpg)" align="left">&nbsp;</td> <td style="width:258px;" align="right" valign="top"><img src="./images/cat_down_right.png" style="width:258px; height:151px;" alt="" border="0" /></td> </tr> </td> </tr> </table></html></body>