View Full Version : probleme cookie
Magi-X
25 mars 2003, 19h35
salut
j'ai fais un ptit site pour mon clan de counter-strike, et g fais tt un syteme ou on peut sinscrire, ce logger, etc...
mais g deja essayer plein de truc pour ke kan on ce log il insere un pti cookie pour par apres plus devoir se logger !!!
mais ca marche po !!!
ici le ptit code ke g mit quand lutilisateur se log et kil a coché le "memoriser":
if(strlen($checkbox) != 0)
{
$cookie_life = time() + 31536000;
setcookie("name", $user, $cookie_life);
setcookie("pass", $password, $cookie_life);
}
Alors comment par apres quand lutilisateur viens sur le site, je dit kil dois aller chercher le cookie et kil doit le verifier et logger si verification est correct ????
jespere ke vous comprenez mon bleme car c'est un peux compliquer a expliquer ...
TheBeO
25 mars 2003, 20h05
deja pour recuperer les infos d'un cookie :
$mavar = $HTTP_COOKIE_VARS["NomDuCookie"];
puis créer un fichier veriflog.php :
<?
//mettre les infos de connexion à la base ici
...
//on recupere le nom et pass du user dans le cookie
$name = $HTTP_COOKIE_VARS["Name"];
$pass = $HTTP_COOKIE_VARS["Pass"];
//test si $name est vide pas la peine de tester le log, le cookie est absent
if (empty($name)) {
//on redire sur la page de login, ou l'accueil ...
header("Location : page.php");
}
//sinon on continue pour vérifier le pass et le user
$requete_sql = "SELECT user.* from user WHERE user.name = $name";
//execution sql
$res = mysql_query ($requete_sql) or die ("Erreur de connection");
//recupere la ligne
$row = mysql_fetch_array($res);
//verif si le user existe : on compte le nbe de lignes renvoyer
if (mysql_num_rows($res) < 1) {
//on redire sur la page de login, ou l'accueil ...
header("Location : page.php");
}
//test mot de passe
if ($pass != $row["pass"]) {
//on redire sur la page de login, ou l'accueil ...
header("Location : page.php");
}
//Ok ici le user est bon et le pass aussi
//on crée un cookie pour la session
setcookie("UserLogged","true");
//puis redirection sur la page ...
header("Location : page.php");
?>
ensuite sur tes pages tu insères ce bout de code en début de fichier (important avant tout texte !!)
<?
//test sur cookie et log
//si pas loggué on recherche le cookie de session et si trouvé on verif le login
if (! $HTTP_COOKIE_VARS["UserLogged"] and $HTTP_COOKIE_VARS["User"] != "") {
header("Location: veriflog.php");
}
?>
voilà c'est peut-étre à modifier un peu pour ton site mais ça devrait te donner une idée déjà :)
un conseil : pour les mots de passes pensent à les crypter
du genre avant de l'enregistrer dans ta base envoie :
crypt($pass) au lieu de $pass
et pour ton cookie pareil :
setcookie("pass", crypt($password), $cookie_life);
;)
Magi-X
25 mars 2003, 20h17
oki merci, je vais tester ca des que je sais uploader mon site a nvx car lycos font des travaux :(
Magi-X
29 mars 2003, 12h41
et quand jtravaille avec des session???
on fais comment??
enzo19
31 mars 2003, 18h40
Conditions de la création de cookie
* Le client doit les accepter (lol)
* Un cookie ne peut pas faire plus de 4Ko (4 Ko c'est quand meme trés gros pour un fichier texte lol, essayez sur note pad vous verez, donc pas la peine de raconter sa life dans le cookie lol)
* Vous ne pouvez pas avoir plus de 20 cookies sur votre site (limitation de 20 cookies créé par client)
Syntaxe de la création de cookie
setcookie (nom, valeur , expiration , répertoire , domaine , sécurité )
Explication des variables de la création
Nom : Le nom du cookie (nan menteur lol).
Valeur : La valeur du cookie.
Expiration : date à laquel le cookie s'efface. Il doit être timestamp Unix. A créer avec time() ou mktrime().(Si il n'y a pas d'expiration mettre NULL)
Répertoire : Désigne le répertoire où le cookie est actif dans votre site. Si il est actif pour tout le site mettez NULL
Domaine : Désigne le domaine où le cookie est actif (votre site quoi). Si vous ne spécifiez pas de domaine mettez NULL (c'est généralement le cas).
Sécurité : Désigne si vous souhaitez que le cookie ne soit communiqué que lors de connexions sécurisées (SSL). Valeur possible : TRUE ou FALSE.
Condition de création d'un cookie
Pour créer un cookie la seul condition (qui pose problème à un grand nombre de personne) c'est que la création du cookie doit être éffectuée AVANT L'ENVOIS DU header DE LA PAGE. Le header contient toutes les infos sur la page (protocol, valeur des cookies ... ) donc vous ne pouvez logiquement pas créer un cookie alors que vous avez déjà envoyé ce qui le contient.
Vous pouvez tester si le header a été envoyé en utilisant la fonction headers_sent().
Exemple :
if (headers_sent())
{
echo "Trop tard pour la création ...";
}
else
{
echo "C partiii !!";
}
Création du cookie
* Cookie simple sans date de validité : setcookie("Mycookie","Coucou");
// ici le cookie s'appele Mycookie et contient Coucou
* Cookie qui ne dure que 1 heure : setcookie("Mycookie","Coucou", mktime()+3600); // 3600 >> SECONDES << donc si vous voulez 1 jour par exemple mettez 86400 secondes.
// ici le cookie s'appele Mycookie, contient Coucou et s'effacera dans 1 heure
* Cookie valide dans le dossier membre du site http://www.ndfr.com pour 1 heure : setcookie("Mycookie","Coucou", mktime()+3600, "/membre/",".ndfr.com");
// ici le cookie s'appele Mycookie, contient Coucou, n'est valable que pour le dossier php de ndfr.com et s'effacera dans 1 heure
* Cookie valide juste pour le dossier achat sur un serveur SSL (http://www.rueducommerce.fr par exemple) : setcookie("Mycookie","Coucou", mktime()+3600, "/achat/", ".rueducommerce.fr",TRUE);
// ici le cookie s'appele Mycookie, contient Coucou, n'est valable que pour le dossier achat du site rueducommerce.fr en mode sécurisé et s'effacera dans 1 heure
Comment récupérer la valeur d'1 cookie
* Vous pouvez récupérer sa valeur de 2 façons :
+ $nomducookie (cette méthode est à bannir car elle n'est pas sur. Utilisez la juste pour vérifier la valeur du cookie quand vous débuggez)
+ $_COOKIE[nomducookie] La valeur est récupérée dans le tableau de register global des cookies. Ce tableau contient toutes les valeurs de cookies que vous créez dans le site. A utiliser OBLIGATOIREMENT !! (sinon je me fache lol)
Effacement du cookie
Pour effacer un cookie, rien de plus simple il suffit de le recréer.
Dans les exemples plus haut nous avons créé un cookie qui s'appele Mycookie et qui a comme valeur Coucou avec : setcookie("Mycookie","Coucou");
Et bien pour l'effacer il y a juste à faire :
setcookie("Mycookie");
Et c'est tout, pas de commande delcookie() ou autre.
Magi-X
31 mars 2003, 21h52
Condition de création d'un cookie
Pour créer un cookie la seul condition (qui pose problème à un grand nombre de personne) c'est que la création du cookie doit être éffectuée AVANT L'ENVOIS DU header DE LA PAGE. Le header contient toutes les infos sur la page (protocol, valeur des cookies ... ) donc vous ne pouvez logiquement pas créer un cookie alors que vous avez déjà envoyé ce qui le contient.
donc avant les <head></head> ci g bien pigé???
vBulletin® v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.