Version complète: sur le forum Webmaster Hub : Cookies
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Gamesvideo
Bonjour,
Je souhaiterais savoir comment faire pour créer un cookie avec le pseudo de la personne lors de l'ouverture d'une session pour qu'elle n'est plus besoin de se connecter à chaque fois

Merci d'avance parce que la j'ai vraiment du mal wacko.gif
Boo2M0rs0
Bonjour,

Créer le cookie lui même n'est pas très compliqué, voici la page complète qui explique comment on s'en sert.

Le problème après, c'est qu'un cookie enregistré sur l'ordinateur des visiteurs n'est pas une information sure. Par exemple si tu envoie directement le cookie du pseudo de la personne, il pourra très bien le modifier et se faire passer pour quelqu'un d'autre.

Ce que je te conseille c'est d'envoyer 2 cookies:
-un identifiant, le plus courant c'est de se servir de l'id du membre
-un code impossible à décrypter et étant unique pour ce membre


Ainsi, même si l'utilisateur essayera de trafiquer l'identifiant (qui peut facilement être trouvé en visitant quelques pages de ton site), il ne pourra pas inventer le code unique.
Gamesvideo
Pourquoi alors lorsque je met ce code, le cookie ne marche pas, je le vérifie avec print_r($_COOKIE) mais je trouve pas mes cookies :gueule:

CITATION
<?php
session_start();
$pseudo=$_SESSION['pseudo'];
$pass=$_SESSION['pass'];
$passes=md5($pass);
setcookie("login", "$pseudo", time()+86400*30);
setcookie("pass", "$passes", time()+86400*30);


Merci d'avance de votre réponse
NorSeb
Salut,

Il ne faut enregistrer le cookie qu'une seule fois, quand tu détecte qu'il n'existe pas (et que tu as les infos à enregistrer).

En gros ca donne :

CODE
// Si les cookies n'existent pas ou sont vides
if ($_COOKIE['pseudo'] == "" && $_COOKIE['pass'] ) {

// Init des cookies
setcookie("pseudo", $pseudo, time()+86400*30);
$pass=md5($pass);
setcookie("pass", $pass, time()+86400*30);
}
// SINON tu teste si le mot de passe et le pseudo sont valides
Gamesvideo
Voila j'ai changé le bout de code mais les cookies ne fonctionnent toujours pas :gueule: :

CITATION
session_start();
$pseudo=$_SESSION['pseudo'];
$pass=$_SESSION['pass'];
$pass=md5($pass);
if ($_COOKIE['pseudo']=="" && $_COOKIE['pass']=="") {
setcookie("login", "$pseudo", time()+86400*30);
setcookie("pass", "$pass", time()+86400*30);
}


Que faire ? blush.gif
Boo2M0rs0
2 choses:
session_start(); est inutile voire même dérengeant dans ce cas, il peut peut être influer sur les cookies.

De plus, il faut que tu n'ais envoyé aucune donnée autre que des header au moment de l'envoi du cookie.

CODE
if ($_COOKIE['pseudo']=="" && $_COOKIE['pass']=="")

écrit plutot:
CODE
if (isset($_COOKIE['pseudo'],$_COOKIE['pass']))

Je ne sais pas trop comment php se comporte donc il est possible que ton code marche aussi wink.gif
Gamesvideo
Meme en suivant les conseils de Boo2M0rs0 ca ne marche toujours pas, aucune erreur apparaît mais le cookie ne fonctionne pas, je ne sais vraiment pas quoi faire.
NorSeb
Salut,

Essaye en utilisant :

$HTTP_COOKIE_VARS["pseudo"];

plutot que

$_COOKIE['pseudo']
ams51
Bonjour,
CITATION(NorSeb @ jeudi 06 octobre 2005, 08h52)
Essaye en utilisant :

$HTTP_COOKIE_VARS["pseudo"];

plutot que

$_COOKIE['pseudo']
*


En quoi cette solution est meilleure ?
NorSeb
Ca n'est pas une solution meilleure qu'une autre.

En fait, la méthode d'accès aux cookies dépend de la configuration de php, du paramètre register_globals je crois.

Selon la valeur de ce paramètre tu peux accéder aux cookies (+ les vraiables POST, GET, SESSION, etc) selon l'une ou l'autre des méthodes...
Portekoi
il est tout de même plus courant d'avoir "$_COOKIE" et plus confortable si l'on utilise $_POST, $_GET etc...
ams51
ok merci.
J'utilise $_COOKIE et j'avoue me perdre un peu parfois avec toutes ces variables globales, leurs avantages et inconvenients.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.