Cookies qui ne se créer pas..
Résolu/Fermé
Legrandfifou
Messages postés
109
Date d'inscription
samedi 3 mai 2014
Statut
Membre
Dernière intervention
17 mars 2017
-
Modifié par jordane45 le 28/06/2015 à 17:46
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 28 juin 2015 à 20:20
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 28 juin 2015 à 20:20
A voir également:
- Cookies qui ne se créer pas..
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Créer un groupe whatsapp - Guide
- Créer un compte instagram - Guide
- Supprimer les cookies - Guide
3 réponses
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
Modifié par jordane45 le 28/06/2015 à 23:09
Modifié par jordane45 le 28/06/2015 à 23:09
Déjà .... places ton code de connexion à la BDD dans un fichier à part .. qu'il te suffira d'inclure dans les pages où tu en auras besoins :
Ensuite.. le reste de ton code :
Cordialement,
Jordane
<?php //------------------------------------------------// // ==> cnxBDD.php <== //Fichier de connexion à la BDD //------------------------------------------------// $serveur = "localhost"; $dbname = "connexion"; $user = "root"; $pass = ""; try{ $bdd = new PDO('mysql:host='.$serveur.';dbname='.$dbname, $user, $pass, array(PDO::ATTR_PERSISTENT => true)); } catch (PDOException $e) { print "Erreur !: " . $e->getMessage() . "<br/>"; die(); }
Ensuite.. le reste de ton code :
<?php //--------------------------------------------------------------------------------// // Démarrage des SESSIONS //--------------------------------------------------------------------------------// if(session_id() == '') { session_start(); } //--------------------------------------------------------------------------------// //on inclu le fichier de connexion à la BDD //--------------------------------------------------------------------------------// require_once ("cnxBDD.php"); //--------------------------------------------------------------------------------// // Récupération des variables //--------------------------------------------------------------------------------// $pseudo = !empty($_POST["pseudo"])?addslashes($_POST["pseudo"]):NULL; // Hachage du mot de passe $pass_hache = !empty($_POST["password"])?sha1($_POST['password']):NULL; // check $check = isset($_POST['check']) ? true : false; //--------------------------------------------------------------------------------// // traitement du SUBMIT : //--------------------------------------------------------------------------------// if(isset($_POST['connexion'])){ // Vérification des identifiants try { $sql = "SELECT pseudo ,password ,id FROM membres WHERE pseudo = :pseudo AND password = :password "; $params = array( ':pseudo'=> $pseudo, ':password' =>$pass_hache); $req = $bdd->prepare($sql); $req->execute($params); //on stocke le resultat dans un array $array_result = $req->fetchall(); }catch(Exception $e){ // en cas de soucis dans la requete : echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Quad Dutch Clan - Joins us !</title> <link rel="stylesheet" type="text/css" title="style" href="style.css"/> </head> <body> <?php include("menu.php"); // pour cocher la case si $check = true $chkbchecked = $check ? "checked='checked'" : ""; if (!isset($_SESSION['pseudo'])){ echo " <div class='connexion_case'> <div class='title_connexion'>Log In<img src='cadenas.png' class='cadenas'></div><!--PNG par [http://www.pngfactory.net/png/20638/Security] Auteur : Templatic.com--> <br /> <form action='' method = 'POST'> <label for='pseudo' class='connexion_case_label'> Pseudo : </label> <br /> <input type='texte' name = 'pseudo' class='connexion_formulaire_case' value='".$pseudo."'/> <br /> <label for='password' class='connexion_case_label'> Password : </label> <br /> <input type='password' name = 'password' class='connexion_formulaire_case'/> <br /> <input type='checkbox' name='check' ".$chkbchecked." /> Se souvenir de moi <br /> <br /> <button type='submit' name='connexion' class='connexion_button_2'>Connexion</button> </form>"; } // Si la requête retourne un résultat (et un seul ! ) if(count($array_result)==1){ $id_user = $array_result['id']; if($check){ // on créé le cookie echo "<br> echo le temps des tests : ... on créé le cookie !<br>"; setcookie('user_id',$id_user , time() + 3600 * 24 * 3 , '/' , '/', false , true); // Pour les tests.. on vérifie si le cookie est bien créé : print_r($_COOKIE); if(isset($_COOKIE['user_id']){ echo " <br> Yes ! Le cookie existe !"; } } echo "<div class='mdp_id_granted'>Vous êtes connecté !</div>"; $_SESSION['pseudo'] = $pseudo; $_SESSION['user_id'] = $id_user; /* sleep(2); header('Location: index.php');*/ }else { echo "<div class='mdp_id_error'>Mauvais identifiant ou mot de passe !</div>"; } ?> </body> </html>
Cordialement,
Jordane
NHenry
Messages postés
15113
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 avril 2024
331
28 juin 2015 à 17:50
28 juin 2015 à 17:50
As-tu vérifié que tu passais bien dans la partie générant le cookie ? (avec un echo par exemple)
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
Modifié par jordane45 le 28/06/2015 à 17:53
Modifié par jordane45 le 28/06/2015 à 17:53
Bonjour,
Ton principal souci ne se trouve pas (selon moi..) dans la création du cookie ... mais dans l'écriture de ta requête ...
... Pour choisir des "champs" dans un "SELECT" ... ce ne sont pas des AND qu'il faut utiliser.... mais des VIRGULES !
.. et si tu utilises le execute avec un ARRAY.. il ne fait pas mettre les variables directement dans ta requête ...
bref.. essayes ceci :
(j'ai ajouté un bloc try/catch pour intercepter les erreurs dans la requête a cas où ! )
Cordialement,
Jordane
Ton principal souci ne se trouve pas (selon moi..) dans la création du cookie ... mais dans l'écriture de ta requête ...
$user = $bdd->prepare("SELECT pseudo AND password AND id FROM membres WHERE pseudo = '$pseudo' AND password = '$pass_hache'");
... Pour choisir des "champs" dans un "SELECT" ... ce ne sont pas des AND qu'il faut utiliser.... mais des VIRGULES !
.. et si tu utilises le execute avec un ARRAY.. il ne fait pas mettre les variables directement dans ta requête ...
bref.. essayes ceci :
(j'ai ajouté un bloc try/catch pour intercepter les erreurs dans la requête a cas où ! )
try{ $sql = "SELECT pseudo ,password ,id FROM membres WHERE pseudo = :pseudo AND password = :password "; $params = array( ':pseudo'=> $pseudo, ':password' =>$pass_hache); $user = $bdd->prepare($sql); $user->execute($params); }catch(Exception $e) { // en cas de soucis dans la requete : echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); }
Cordialement,
Jordane
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
28 juin 2015 à 17:55
28 juin 2015 à 17:55
Tu as aussi un PB après..... tu fais un FETCH ... mais après ton IF ... donc.. ça ne marchera pas !
$resultat = $user->fetch(); if (isset($_POST['check'])) { setcookie('user_id' , $resultat ->id , time() + 3600 * 24 * 3 , '/' , '/', false , true); }
Legrandfifou
Messages postés
109
Date d'inscription
samedi 3 mai 2014
Statut
Membre
Dernière intervention
17 mars 2017
5
28 juin 2015 à 17:57
28 juin 2015 à 17:57
jordane45
Messages postés
38145
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 avril 2024
4 650
>
Legrandfifou
Messages postés
109
Date d'inscription
samedi 3 mai 2014
Statut
Membre
Dernière intervention
17 mars 2017
Modifié par jordane45 le 28/06/2015 à 18:03
Modifié par jordane45 le 28/06/2015 à 18:03
Tu peux nous poster le code complet corrigé .. qu'on essayes de voir ce qui pourrait bloquer ?
Et puis.. au cas où, essayes ceci :
Et puis.. au cas où, essayes ceci :
$resultat = $user->fetch(PDO::FETCH_OBJ); if (isset($_POST['check'])) { setcookie('user_id' , $resultat->id , time() + 3600 * 24 * 3 , '/' , '/', false , true); }
Legrandfifou
Messages postés
109
Date d'inscription
samedi 3 mai 2014
Statut
Membre
Dernière intervention
17 mars 2017
5
Modifié par jordane45 le 28/06/2015 à 19:47
Modifié par jordane45 le 28/06/2015 à 19:47
Oui excuse moi je n'ai pas vu ton message avant que je corrige j'ai recorigé fin plutot copier/coller a la place
Et la j'ai l'erreur 'Trying to get property of non-object in C:\wamp\www\tests\connexion.php on line 97'
Si j'essaye avec ce que tu viens de mettre je n'ai plus d'erreur sauf que le cookie n'est toujours pas créer apparement quand je fais <?php var_dump($_COOKIE['user_id']); ?> il m'affiche l'erreur "Notice: Undefined index: user_id in C:\wamp\www\tests\index.php on line 30" et en dessous de l'erreur il met null
EDIT : Ajout du LANGAGE dans les balises de code.
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Quad Dutch Clan - Joins us !</title> <link rel="stylesheet" type="text/css" title="style" href="style.css"/> </head> <body> <?[/contents/1351-php-introduction php] include("menu.php"); ?> <?php $bdd = new PDO ('mysql:host=localhost;dbname=connexion', 'root'); if (!isset($_SESSION['pseudo'])) { echo ' <div class="connexion_case"> <div class="title_connexion">Log In<img src="cadenas.png" class="cadenas"></div><!--PNG par [http://www.pngfactory.net/png/20638/Security] Auteur : Templatic.com--> <br /> <form action="" method = "POST"> <label for="pseudo" class="connexion_case_label"> Pseudo : </label> <br /> <input type="texte" name = "pseudo" class="connexion_formulaire_case"/> <br /> <label for="password" class="connexion_case_label"> Password : </label> <br /> <input type="password" name = "password" class="connexion_formulaire_case"/> <br /> <input type="checkbox" name="check" /> Se souvenir de moi <br /> <br /> <button type="submit" name="connexion" class="connexion_button_2">Connexion</button> </form> '; } if(isset($_POST['connexion'])) { $pseudo = addslashes($_POST["pseudo"]) ; // Hachage du mot de passe $pass_hache = sha1($_POST['password']); // Vérification des identifiants try { $sql = "SELECT pseudo ,password ,id FROM membres WHERE pseudo = :pseudo AND password = :password "; $params = array( ':pseudo'=> $pseudo, ':password' =>$pass_hache); $user = $bdd->prepare($sql); $user->execute($params); } catch(Exception $e) { // en cas de soucis dans la requete : echo "<br>ERREUR ! ".$e->getMessage()."<br>"; echo "<br>params : <br>"; print_r($params); } $resultat = $user->fetch(); if (isset($_POST['check'])) { setcookie('user_id' , $resultat ->id , time() + 3600 * 24 * 3 , '/' , '/', false , true); } if ($resultat) { echo '<div class="mdp_id_granted">Vous êtes connecté !</div>'; $_SESSION['pseudo'] = $pseudo; /* sleep(2); header('Location: index.php');*/ } else { echo '<div class="mdp_id_error">Mauvais identifiant ou mot de passe !</div></div>'; } } ?> </body> </html>
Et la j'ai l'erreur 'Trying to get property of non-object in C:\wamp\www\tests\connexion.php on line 97'
Si j'essaye avec ce que tu viens de mettre je n'ai plus d'erreur sauf que le cookie n'est toujours pas créer apparement quand je fais <?php var_dump($_COOKIE['user_id']); ?> il m'affiche l'erreur "Notice: Undefined index: user_id in C:\wamp\www\tests\index.php on line 30" et en dessous de l'erreur il met null
EDIT : Ajout du LANGAGE dans les balises de code.
Legrandfifou
Messages postés
109
Date d'inscription
samedi 3 mai 2014
Statut
Membre
Dernière intervention
17 mars 2017
5
28 juin 2015 à 20:02
28 juin 2015 à 20:02
Je viens seulement de voir l'EDIT , mais je ne comprend pas j'ai ré-essayer avec le code que j'ai mis j'avais l'erreur obj donc j'ai remis $resultat = $user->fetch(PDO::FETCH_OBJ); mais je me suis rappeller pour créer un cookie il ne faut pas le mettre avant tout le code HTML ?