Partage
  • Partager sur Facebook
  • Partager sur Twitter

Se souvenir de moi

setcookie

    17 janvier 2021 à 16:08:00

    Bonjour,

    Je n'arrive pas à trouver la clé dans la BDD 

    par contre la clé est présente dans les cookies

    J'aimerais bien avoir votre aide pour comprendre pourquoi je ne voit pas la clé

    Merci

    if($_POST['remember']){
    	        			$remember_key = str_random(250);
    	        			$updateRememberKey=$bdd->prepare('UPDATE membres SET remember_key = ? WHERE id= ? ');
                			$updateRememberKey->execute([$remember_key, $user->id]);
                			setcookie('remember', $user->id . '//'. $remember_key . sha1($user->id . 'test');
    }
    header("Location:lllll.php");



    • Partager sur Facebook
    • Partager sur Twitter
      17 janvier 2021 à 16:21:51

      • Les erreurs PDO sont activées et affichées ?
      • $user->id vaut 0 ou NULL ou autre valeur qui ne correspond à rien dans la table ?
      • Partager sur Facebook
      • Partager sur Twitter
        17 janvier 2021 à 18:44:38

        julp a écrit:

        • Les erreurs PDO sont activées et affichées ?
        • $user->id vaut 0 ou NULL ou autre valeur qui ne correspond à rien dans la table ?


        Oui les erreurs PDO normalement elles sont activées mais j'ai pas vue de message

        PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

        le id c'est un int il s'incremente en fonction des membre il n'est jamais null

        Est ce qu'il faudrait changer les objet avec par exemple $user['id'] au lieu de  $user->id ?

        Merci

        • Partager sur Facebook
        • Partager sur Twitter
          17 janvier 2021 à 18:53:27

          > Est ce qu'il faudrait changer les objet avec par exemple $user['id'] au lieu de $user->id ?

          A toi de nous le dire, on n'a pas le code qui montre d'où sort $user. Fais un var_dump dessus, on sera fixé.

          • Partager sur Facebook
          • Partager sur Twitter
            19 janvier 2021 à 20:47:33

            julp a écrit:

            > Est ce qu'il faudrait changer les objet avec par exemple $user['id'] au lieu de $user->id ?

            A toi de nous le dire, on n'a pas le code qui montre d'où sort $user. Fais un var_dump dessus, on sera fixé.


            voici le code 

            $requser = $db->prepare("SELECT * FROM test WHERE email = '$username' OR pseudo = '$username' LIMIT 1");
            
            		$requser->execute(array($username, $username));
            		$userexist = $requser->rowCount();
            		if($userexist ==1){
            			$user = $requser->fetch();
            			var_dump($user);
            			$email=$user['email'];

            quand j'ai mis var_dump ça m'a sorti

            array(20) { ["id"]=> string(1) "2" [0]=> string(1) "2" ["pseudo"]=> string(4) "AAAA" [1]=> string(4) "AAAA" ["email"]=> string(19)  [2]=> string(19)  ["pass"]=> string(60) "$2y$10$zRYfrnEnuYlF./Jo18pDTe13VMtFWYZW" [3]=> string(60) "$2y$10$zRYfrnEnuYlF./Jo18pDTe13VMtFWYZW" ["date_inscription"]=> string(10) "2021-01-17" [4]=> string(10) "2021-01-17" ["confirmkey"]=> string(4) "none" [5]=> string(4) "none" ["confirmed"]=> string(19) "2021-01-17 14:15:37" [6]=> string(19) "2021-01-17 14:15:37" ["reset_key"]=> NULL [7]=> NULL ["reset_at"]=> NULL [8]=> NULL ["remember_key"]=> string(0) "" [9]=> string(0) "" }

            C'est la case du remember_key que je n'arrive pas à comprendre pourquoi je ne vois pas la clé !!

            Merci bcp pour ton aide

            • Partager sur Facebook
            • Partager sur Twitter
              19 janvier 2021 à 21:49:03

              La requête n'est pas correcte, ça te vaut sans doute des injections SQL ...

              C'est normal que ce n'est pas la même table entre le SELECT et l'UPDATE (test vs membres) ?

              • Partager sur Facebook
              • Partager sur Twitter
                19 janvier 2021 à 22:01:09

                julp a écrit:

                La requête n'est pas correcte, ça te vaut sans doute des injections SQL ...

                C'est normal que ce n'est pas la même table entre le SELECT et l'UPDATE (test vs membres) ?


                qu'est ce qui manque pour la requete pour que j'évite les injections, je voudrais que l'utilisateur se connecte avec le mail ou le pseudo

                Sinon c'est la meme table membre sauf que j'ai fait une erreur de frappe 

                • Partager sur Facebook
                • Partager sur Twitter
                  19 janvier 2021 à 22:50:47

                  Dans ce cas c'est ta condition if($_POST['remember']){ qui est fausse ?

                  > qu'est ce qui manque pour la requete pour que j'évite les injections

                  Elle est mal préparée, tu bindes des marqueurs qui n'existent même pas dans la requête.

                  PS : email = ? OR pseudo = ? peut se simplifier en ? IN(email, pseudo) (et ça élimine un bind, surtout qu'il s'agit de la même valeur)

                  -
                  Edité par julp 19 janvier 2021 à 22:51:58

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Se souvenir de moi

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown