La mise en application des cookies.
Résolu/Fermé
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
-
26 janv. 2018 à 10:15
Max747 - 29 janv. 2018 à 15:52
Max747 - 29 janv. 2018 à 15:52
A voir également:
- La mise en application des cookies.
- Mise en forme conditionnelle excel - Guide
- Supprimer les cookies - Guide
- Mise a jour des pilotes - Guide
- Application gps sans internet - Guide
- Mise a jour airpods - Guide
9 réponses
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
26 janv. 2018 à 10:53
26 janv. 2018 à 10:53
Bonjour,
Si tu as l'ID ... il t'es alors possible de récupérer les infos le concernant en BDD .... tu as donc tout ce qu'il te faut.
Le site auquel je souhaiterai l'utilisation des cookies représenté simplement ici par le fichier jeux.php ne contient que l'id de l'utilisateur.(Dans jeux.php echo retourne le chiffre 1 comme faisant partie du pseudo de la première ligne du tableau $array.)
Alors qu'il me faudrait au moins son pseudo et mot de passe pour qu'il soit reconnu et qu'il n'ait plus à se connecter.
Si tu as l'ID ... il t'es alors possible de récupérer les infos le concernant en BDD .... tu as donc tout ce qu'il te faut.
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
27 janv. 2018 à 18:08
27 janv. 2018 à 18:08
Bonjour,
Je pensais avoir trouvé l'ID se trouvant dans le cookie, mais en fait je crois que je me suis trompé.
J'ai trouvé une solution toute simple.Mais c'était trop facile pour fonctionner.
La voici pour trouver l'utilisateur (username) dans le cookie:
Pareil avec l' id.
Et voici le message d'erreur retourné:
Le problème se produit lorsque j'ouvre le navigateur après l'avoir fermé.
Sinon les SESSIONs fonctionnent tant que le navigateur est ouvert bien entendu.
D'où l'inutilité des cookies dans ce cas.
Je pensais avoir trouvé l'ID se trouvant dans le cookie, mais en fait je crois que je me suis trompé.
J'ai trouvé une solution toute simple.Mais c'était trop facile pour fonctionner.
La voici pour trouver l'utilisateur (username) dans le cookie:
<?php require 'conf.php'; require 'header.php'; echo 'Bonjour ' . htmlspecialchars($_COOKIE["username"]) . '!'; ?> <h1>Bienvenue sur le site</h1> <?php require 'footer.php';
Pareil avec l' id.
Et voici le message d'erreur retourné:
Le problème se produit lorsque j'ouvre le navigateur après l'avoir fermé.
Sinon les SESSIONs fonctionnent tant que le navigateur est ouvert bien entendu.
D'où l'inutilité des cookies dans ce cas.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
27 janv. 2018 à 19:36
27 janv. 2018 à 19:36
Visiblement.. dans ton cookie tu dispose de l'ID
(dans la variable AUTH )
Il te suffit donc de faire une requête dans ta bdd pour récupérer les infos du users...
Au passage... tu as oublié de mettre l'exécution de ta requête dans un try/catch...
Tu dois modifier ta fonction query comme ceci:
(dans la variable AUTH )
Il te suffit donc de faire une requête dans ta bdd pour récupérer les infos du users...
SELECT username FROM users WHERE id = :id
Au passage... tu as oublié de mettre l'exécution de ta requête dans un try/catch...
Tu dois modifier ta fonction query comme ceci:
public function query($sql, $data = array()){ try{ $req =$this->db->prepare($sql); $req->execute($data); return $req->fetchAll(PDO::FETCH_OBJ); }catch(Exception $e){ echo " Erreur ! " .$e->getMessage(); exit(); } }
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
28 janv. 2018 à 11:24
28 janv. 2018 à 11:24
Bonjour,
Ok. J'avais omis de modifié la fonction "query".
C'est fait désormais.
Ensuite j'ai réalisé cette requête dans le fichier index.php:
Mais comme l'indique le message d'erreur que voici, la variable username est toujours absente lorsque je ferme le navigateur pour l'ouvrir ensuite.
Sans doute n' ais je pas fait exactement ce que tu m'avais conseillé de faire?
Dans ce cas, j'aurai besoin d'autres précisions plus détaillées, si tu veux bien, pour aboutir à l'utilisation et la mise en oeuvre des cookies.
Ok. J'avais omis de modifié la fonction "query".
C'est fait désormais.
Ensuite j'ai réalisé cette requête dans le fichier index.php:
<?php require 'conf.php'; require 'header.php'; require 'connexion.php'; $username = $_SESSION['username']; //Voir présence d'username: echo $username; echo "</br>"; if (isset ($username)){ echo "La variable username est présente."; }else{ echo "La variable username est absente."; } echo "</br>"; $errMsg = NULL; //préparation de la requête et de ses variables $sql = "SELECT username FROM users WHERE id = :id"; $datas = array( ':username' => $username); //traitement de la requete try{ $user = $connection->prepare($sql); $user->execute($datas); $result = $user->fetch(PDO::FETCH_ASSOC); // on récupère la première ligne de résultat }catch(Exception $e){ $errMsg[] = "Erreur dans la requete ".$sql . " => " . $e->getMessage(); $error = true; } require 'footer.php'; ?>
Mais comme l'indique le message d'erreur que voici, la variable username est toujours absente lorsque je ferme le navigateur pour l'ouvrir ensuite.
Sans doute n' ais je pas fait exactement ce que tu m'avais conseillé de faire?
Dans ce cas, j'aurai besoin d'autres précisions plus détaillées, si tu veux bien, pour aboutir à l'utilisation et la mise en oeuvre des cookies.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
28 janv. 2018 à 11:42
28 janv. 2018 à 11:42
Oulalalaaa...
Déjà.. tu as une fonction "query" ... pourquoi ne pas l'utiliser ?
Ensuite... la récupération "propre" des variables...ça serait bien.
A lire ici : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Ensuite.... ta requête a besoin de la variable ID
Cette variable est contenu dans ta variable COOKIE ....
A quel moment l'as tu récupéré dans le code que tu nous montres ??
Déjà.. tu as une fonction "query" ... pourquoi ne pas l'utiliser ?
Ensuite... la récupération "propre" des variables...ça serait bien.
A lire ici : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Ensuite.... ta requête a besoin de la variable ID
Cette variable est contenu dans ta variable COOKIE ....
A quel moment l'as tu récupéré dans le code que tu nous montres ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
28 janv. 2018 à 12:40
28 janv. 2018 à 12:40
Justement tout le problème est pour moi d'extraire la variable ID de $_COOKIE['auth']
Je ne sais pas le faire même en cherchant.
J'utilise toujours prépare en sachant que c'est sécuritif.
Alors c'est devenu une habitude qui fait que je ne pense plus à query.
Pour la récupération propre des variable se serait bien en effet.
Mais avant cela je dois résoudre le problème de l'extraction de l'ID du cookie.
Merci de bien vouloir m'aider.
Je ne sais pas le faire même en cherchant.
J'utilise toujours prépare en sachant que c'est sécuritif.
Alors c'est devenu une habitude qui fait que je ne pense plus à query.
Pour la récupération propre des variable se serait bien en effet.
Mais avant cela je dois résoudre le problème de l'extraction de l'ID du cookie.
Merci de bien vouloir m'aider.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
Modifié le 28 janv. 2018 à 13:06
Modifié le 28 janv. 2018 à 13:06
J'utilise toujours prépare en sachant que c'est sécuritif.
Alors c'est devenu une habitude qui fait que je ne pense plus à query
Quand je parle de "query" ... je parle de TA FONCTION "query" (celle à laquelle je t'ai fait ajouté le TRY CATCH
e problème est pour moi d'extraire la variable ID de $_COOKIE['auth']
Tu as créé ton cookie avec ce code :
setcookie('auth', $user->id . '-----' . sha1($user->username . $user->password . $_SERVER['REMOTE_ADDR']), time() + 3600 * 24 * 3, '/', 'localhost', false, true);
Il te suffit donc de lire le contenu de 'auth' puis de spliter la chaine en utilisant le séparateur '-----'
Va donc voir la fonction :
http://php.net/manual/fr/function.explode.php
Pour la récupération propre des variable se serait bien en effet.
C'est plus que "bien" ... c'est NÉCESSAIRE !
Ça évite un grand nombre d'erreur et ça facilite l'écriture et la maintenance du code.
Merci de bien vouloir m'aider.
C'est ce que je fait.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
28 janv. 2018 à 13:08
28 janv. 2018 à 13:08
NB1 : Au passage... c'est une grosse faille de sécurité de stocker le password dans les variables de session ou de cookie.
NB2 : On n'utilise plus le SHA1 ni le MD5 pour l'encodage des password....
Désormais on utilise la fonction password_verify.
https://www.php.net/manual/fr/function.password-verify.php et donc, pour encoder le password : http://php.net/manual/fr/function.password-hash.php
NB2 : On n'utilise plus le SHA1 ni le MD5 pour l'encodage des password....
Désormais on utilise la fonction password_verify.
https://www.php.net/manual/fr/function.password-verify.php et donc, pour encoder le password : http://php.net/manual/fr/function.password-hash.php
Max747
Messages postés
258
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
11 janvier 2024
28 janv. 2018 à 13:49
28 janv. 2018 à 13:49
Voici mon code qui n' a pas beaucoup évolué je dois dire:
Alors restons pour l'instant sur la question de l'ID et essayons d'avancer pas à pas si tu veux bien.
D'abord la notice n'est pas assez explicative pour moi et sans doute pour beaucoup qui nous lisent ou qui nous lirons.
http://php.net/manual/fr/function.explode.php
Néanmoins je tente d'utiliser cette fonction explode qui si j'ai bien compris sert à scinder chaque variables du cookie.
Voici donc la première ligne que j'ai écrit:
Je ne pense pas que ce soit si mauvais que cela.
Mais cela me retourne quand même le message que voici:
Comment écrirais tu cela à ma place pour ne pas avoir ce message d'erreur.
Au passage aussi.
Mon site ne comporte pas une importance telle il ne soit pas nécessaire pour l'instant de ne plus utiliser le SHA1 ni le MD5 au profit de la fonction password_verify.
Néanmoins, merci pour cette information importante qui pourrait l'être pour les autres.
<?php require 'conf.php'; require 'header.php'; require 'connexion.php'; $username = $_SESSION['username']; //Voir présence d'username: echo $username; echo "</br>"; if (isset ($username)){ echo "La variable username est présente."; }else{ echo "La variable username est absente."; } echo "</br>"; $errMsg = NULL; //préparation de la requête et de ses variables $sql = "SELECT username FROM users WHERE id = :id"; $datas = array( ':username' => $username); //traitement de la requete try{ $user = $connection->query($sql); $user->execute($datas); $result = $user->fetch(PDO::FETCH_ASSOC); // on récupère la première ligne de résultat }catch(Exception $e){ $errMsg[] = "Erreur dans la requete ".$sql . " => " . $e->getMessage(); $error = true; } $pseudo=$username; echo 'Remplacement de $username par $pseudo qui reste '.$pseudo.'. '; require 'footer.php'; explode ($_COOKIE['auth']); ?>
Alors restons pour l'instant sur la question de l'ID et essayons d'avancer pas à pas si tu veux bien.
D'abord la notice n'est pas assez explicative pour moi et sans doute pour beaucoup qui nous lisent ou qui nous lirons.
http://php.net/manual/fr/function.explode.php
Néanmoins je tente d'utiliser cette fonction explode qui si j'ai bien compris sert à scinder chaque variables du cookie.
Voici donc la première ligne que j'ai écrit:
explode ($_COOKIE['auth']);
Je ne pense pas que ce soit si mauvais que cela.
Mais cela me retourne quand même le message que voici:
Comment écrirais tu cela à ma place pour ne pas avoir ce message d'erreur.
Au passage aussi.
Mon site ne comporte pas une importance telle il ne soit pas nécessaire pour l'instant de ne plus utiliser le SHA1 ni le MD5 au profit de la fonction password_verify.
Néanmoins, merci pour cette information importante qui pourrait l'être pour les autres.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
28 janv. 2018 à 20:18
28 janv. 2018 à 20:18
Le message d'erreur... pourtant limpide... t'explique que tu as mal écrit la fonction explode et qu'il te manque un paramètre.... (un argument) lors de son appel dans ton code.
Ensuite
Hein ??? pas assez explicative ???
Que ne comprends tu pas dans cette simple phrase
As tu au moins pris le temps de regarder les exemples qui y sont donnés ???
Le tout ... mixé avec ma réponse précédente :
Alors pour traduire :
"splitter" => explode
"séparateur" => delimiter
Pour finir.... tu ne tiens compte d'aucune de mes précédentes remarques concernant ton code....
Tu ne réutilises pas ta fonction query ...
Tu ne récupères toujours pas les variables AVANT de les utiliser
Donc commence par mettre un peu de rigueur dans ton travail... tu verras que ça te rendra service (et à nous aussi lorsque tu viens nous demander de l'aide)
Ensuite
D'abord la notice n'est pas assez explicative pour moi et sans doute pour beaucoup qui nous lisent ou qui nous lirons
Hein ??? pas assez explicative ???
Que ne comprends tu pas dans cette simple phrase
Retourne un tableau de chaînes de caractères créées en découpant la chaîne du paramètre string en plusieurs morceaux suivant le paramètre delimiter.
As tu au moins pris le temps de regarder les exemples qui y sont donnés ???
// Exemple 1 $pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); echo $pieces[0]; // piece1 echo $pieces[1]; // piece2
Le tout ... mixé avec ma réponse précédente :
Il te suffit donc de lire le contenu de 'auth' puis de spliter la chaine en utilisant le séparateur '-----'
Alors pour traduire :
"splitter" => explode
"séparateur" => delimiter
Pour finir.... tu ne tiens compte d'aucune de mes précédentes remarques concernant ton code....
Tu ne réutilises pas ta fonction query ...
Tu ne récupères toujours pas les variables AVANT de les utiliser
Donc commence par mettre un peu de rigueur dans ton travail... tu verras que ça te rendra service (et à nous aussi lorsque tu viens nous demander de l'aide)
Le message d'erreur n'est pas limpide pour moi car je ne sais pas lire l'anglais.
Et je n'ai pas honte de l'écrire car je me souviens qu'autrefois un premier ministre de la France qui s'appelait Pierre Bérégovoy ne connaissait pas non plus l'anglais.
Ce qui ne l'empêchait pas d'occuper l'une des plus hautes fonctions de l'état.
La phrase que voici est également difficilement compréhensible pour moi:
"Retourne un tableau de chaînes de caractères créées en découpant la chaîne du paramètre string en plusieurs morceaux suivant le paramètre delimiter."
Trop longue pour être suffisamment explicative. C'est presque du Stendhal!
Bien sûr que j'ai pris le temps de lire les exemples.Et j'ai même appliquer celui que tu me montres.
Et si il y a des gens qui perdent leur temps à lire ce sujet, en tous cas pour certains d'entre eux ils seront bien contents de récupérer les fichiers que j'ai présenté.
Car ceux ci fonctionnent pour créer des cookies d'un bon niveau de sécurité!
Le seul problème qu'il reste à résoudre étant l'utilisation de ces foutus cookies.
Mais je sais que d'autres un peu plus compétents que moi sauront résoudre ce problème en silence sans me dire merci.
Bien sûr.
En tout cas je ne suis pas venu les "mains vides" comme on dit.
C'est ainsi qu' en remerciement je pouvais espérer une aide plus conséquente.
Si c'était à refaire, je ne pense pas que j'aurai présenté ainsi tous mes fichiers.Au vu du faible retour que j'en reçois.
Si je reviens un jour sur ce site, je pratiquerai autrement.
En attendant, il me reste à résoudre toujours ce problème d'utilisation des cookies.
Alors même si je dois en réduire la sécurité, je finirai bien par y arriver d'une manière comme d'une autre.
Salutations.
Et je n'ai pas honte de l'écrire car je me souviens qu'autrefois un premier ministre de la France qui s'appelait Pierre Bérégovoy ne connaissait pas non plus l'anglais.
Ce qui ne l'empêchait pas d'occuper l'une des plus hautes fonctions de l'état.
La phrase que voici est également difficilement compréhensible pour moi:
"Retourne un tableau de chaînes de caractères créées en découpant la chaîne du paramètre string en plusieurs morceaux suivant le paramètre delimiter."
Trop longue pour être suffisamment explicative. C'est presque du Stendhal!
Bien sûr que j'ai pris le temps de lire les exemples.Et j'ai même appliquer celui que tu me montres.
Et si il y a des gens qui perdent leur temps à lire ce sujet, en tous cas pour certains d'entre eux ils seront bien contents de récupérer les fichiers que j'ai présenté.
Car ceux ci fonctionnent pour créer des cookies d'un bon niveau de sécurité!
Le seul problème qu'il reste à résoudre étant l'utilisation de ces foutus cookies.
Mais je sais que d'autres un peu plus compétents que moi sauront résoudre ce problème en silence sans me dire merci.
Bien sûr.
En tout cas je ne suis pas venu les "mains vides" comme on dit.
C'est ainsi qu' en remerciement je pouvais espérer une aide plus conséquente.
Si c'était à refaire, je ne pense pas que j'aurai présenté ainsi tous mes fichiers.Au vu du faible retour que j'en reçois.
Si je reviens un jour sur ce site, je pratiquerai autrement.
En attendant, il me reste à résoudre toujours ce problème d'utilisation des cookies.
Alors même si je dois en réduire la sécurité, je finirai bien par y arriver d'une manière comme d'une autre.
Salutations.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
29 janv. 2018 à 12:35
29 janv. 2018 à 12:35
Wouaaahhhh......
Je te retourne le compliment .... faire un message aussi long pour ne rien dire... chapeau !
Bref..contrairement à l'époque.. aujourd'hui il existe de nombreux outils qui permettent de traduire en français des textes anglais.... et désolé si mes phrases (ou celles des notices d'utilisation ) font plus de 5 mots.
Mais comme je ne suis pas (trop) méchant... je vais te donner le code tout fait (chose qu'on ne fait pas ici !!! )
voila :
Pour finir
Il est clair pour tout le monde, vu ta question et ton manque de compréhension des plus basiques explications qui te sont données... que tu n'es pas l'auteur de ce code....
Alors .. dire "merci" pour ces fichiers ... désolé mais je n'en vois pas l’intérêt. Surtout qu'a peu près n'importe quel débutant serait en mesure des les écrire sans grande difficulté.
Trop longue pour être suffisamment explicative
Je te retourne le compliment .... faire un message aussi long pour ne rien dire... chapeau !
Bref..contrairement à l'époque.. aujourd'hui il existe de nombreux outils qui permettent de traduire en français des textes anglais.... et désolé si mes phrases (ou celles des notices d'utilisation ) font plus de 5 mots.
Mais comme je ne suis pas (trop) méchant... je vais te donner le code tout fait (chose qu'on ne fait pas ici !!! )
voila :
// récupération PROPRE de ta variable COOKIE AVANT de l'utiliser $auth = !empty($_COOKIE['auth']) ? $_COOKIE['auth'] : NULL; //explode : $a_auth = explode('-----',$auth); // on extrait l'ID $id = !empty($a_auth) ? $a_auth[0] : NULL;
Pour finir
contents de récupérer les fichiers que j'ai présenté.
Car ceux ci fonctionnent pour créer des cookies d'un bon niveau de sécurité!
Il est clair pour tout le monde, vu ta question et ton manque de compréhension des plus basiques explications qui te sont données... que tu n'es pas l'auteur de ce code....
Alors .. dire "merci" pour ces fichiers ... désolé mais je n'en vois pas l’intérêt. Surtout qu'a peu près n'importe quel débutant serait en mesure des les écrire sans grande difficulté.