Aller au contenu

Sujets conseillés

Posté

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:

Posté

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.

Posté

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:

<?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

Posté

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 :

// 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

Posté

Voila j'ai changé le bout de code mais les cookies ne fonctionnent toujours pas :gueule: :

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:

Posté

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.

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

écrit plutot:

if (isset($_COOKIE['pseudo'],$_COOKIE['pass']))

Je ne sais pas trop comment php se comporte donc il est possible que ton code marche aussi ;)

Posté

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.

Posté

Bonjour,

Essaye en utilisant :

$HTTP_COOKIE_VARS["pseudo"];

plutot que

$_COOKIE['pseudo']

<{POST_SNAPBACK}>

En quoi cette solution est meilleure ?

Posté (modifié)

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...

Modifié par NorSeb
Posté

ok merci.

J'utilise $_COOKIE et j'avoue me perdre un peu parfois avec toutes ces variables globales, leurs avantages et inconvenients.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...