Partage
  • Partager sur Facebook
  • Partager sur Twitter

Taille maximum des cookies

Sujet résolu
    2 septembre 2006 à 14:18:07

    Bonjour à tous ;) !

    Voilà le problème du jour : je posséde une chaine très très très grosse ( tellement grosse qu'en rajoutant un petit milliers de caracteres, elle devient trop grosse et provoque une erreur ) que j'aimerai faire entrer dans un cookie. Comme je m'en doute, le cookie ne peut pas contenir une tel chaine. Je me vois donc obliger de séparer la chaine en morceaux ...

    Mais pour celà, il me faudrait savoir contient de caractères peut contenir un cookie. J'aimerai aussi savoir s'il existait une fonction qui donnerai le même résultat que mb_substr et compagnie ( qui exigent le module mbstring, non-activé chez mon hébergeur ) parce que je ne vois vraiment pas comment fonctionne cette fonction ( impossible de la recoder moi-même donc ;) )

    Merci d'avance ^^:D

    Edit, trois ans plus tard : bien entendu, les cookies ne sont pas adaptés à de telles données. Préférez l'utilisation des fichiers ou de la base de données.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      2 septembre 2006 à 14:25:10

      J'ai pas trouvé la longueur max des cookies, mais rien ne t'empeche de faire un array dans $_COOKIES qui contiendrais les bout de chaine ;)
      Un foreach et c'est recoller :)
      • Partager sur Facebook
      • Partager sur Twitter
        2 septembre 2006 à 14:29:30

        C'est à dire ?
        Comme ca ?

        $_COOKIE[] = $string_part1;
        $_COOKIE[] = $string_part2;
        ...etc...



        ?
        • Partager sur Facebook
        • Partager sur Twitter
          2 septembre 2006 à 14:30:43

          pourquoi as-tu besoin d'autant de place dans tes cookies ? Ne serait-ce pas plus simple d'utiliser un fichier ? Si c'est pour un système de messages lus/non-lus, ne serait-il pas plus simple d'utiliser une table pour cela ?
          • Partager sur Facebook
          • Partager sur Twitter
            2 septembre 2006 à 14:36:55

            Citation : Quadehar

            pourquoi as-tu besoin d'autant de place dans tes cookies ? Ne serait-ce pas plus simple d'utiliser un fichier ? Si c'est pour un système de messages lus/non-lus, ne serait-il pas plus simple d'utiliser une table pour cela ?



            Je sais bien que y'a beaucoup de gens obsédé par les messages lus/non-lus en ce moment, mais c'est pas mon cas ;) Je sais déja faire ca ^^:p

            Bah non, je suis obligé de faire des cookies, le contenu doit être différent pour chaque personne ...
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              2 septembre 2006 à 14:42:42

              Regarde, un truc comme ca :)
              $message = 'ton super long message';
              $length = 10000; //nombre de carac dans le cookie
              $div = ceil(count($message)/$length); //Nombre de tour de boucle
              $exp = time()+(60*60*24*365); //expiration du cookie
              for($i = 0; $i < div; $i++)
                  setcookie('message[]', substr($message, $i, $i*$length, $exp);

              et pour recupérer
              $message = '';
              foreach($_COOKIES['message'] as $value)
                  $message .= $value;
              • Partager sur Facebook
              • Partager sur Twitter
                2 septembre 2006 à 14:56:23

                Je vois pas vraiment comment ca marche et ... ca marche pas ^^ ! Y'a pas d'erreur mais ca ne m'enregistre rien ...
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  2 septembre 2006 à 14:59:02

                  Il manque un $ devant div dans le for
                  Ca devrait te mettre un message d'erreur, used undefined constant ou un truc du genre pourtant
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 septembre 2006 à 14:59:37

                    J'avais vu t'inquiete pas ;) !
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      2 septembre 2006 à 15:34:28

                      Y aussi une erreur avec le substr, manque une (
                      $message = 'ton super long message';
                      $length = 10000; //nombre de carac dans le cookie
                      $div = ceil(count($message)/$length); //Nombre de tour de boucle
                      $exp = time()+(60*60*24*365); //expiration du cookie
                      for($i = 0; $i < $div; $i++)
                          setcookie('message[]', substr($message, $i*$length, ($i+)*$length), $exp);
                      $message = '';
                      foreach($_COOKIES['message'] as $value)
                          $message .= $value;
                      • Partager sur Facebook
                      • Partager sur Twitter
                        2 septembre 2006 à 19:16:02

                        J'avais vu la paranthèe fermante ;) !

                        Mais j'avoue ne pas comprendre ton code, même modifié ( qui ne marche pas d'ailleurs ) : J'ai tout essayé ( sauf ta proposition qui me renvoie logiquement une erreur à cause du $i+($length) ) .. ne serait-ce pas plutot ca :

                        for($i = 0; $i < $div; $i++)
                            setcookie('message[]', substr($message, $length, $i*$length), $exp);


                        Ce qui me gene, c'est le message[] entre guillement simple ...
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          2 septembre 2006 à 19:41:14

                          Si tu fais:
                          $tab = array();
                          for($i = 0; $i < 10; $i++)
                          $tab[] = $i;
                          un print_r($tab); afficheras:
                          array(
                          [0] => 0,
                          [1] => 1,
                          ...,
                          [9] => 9);
                          Bien je fais pareil avec $_COOKIES ;)
                          Le setcookies est encore faux ^^
                          setcookie('message[]', substr($message, $i*$length, ($i+1)*$length), $exp);
                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 septembre 2006 à 10:19:47

                            Citation : Yondaime

                            Si tu fais:
                            $tab = array();
                            for($i = 0; $i < 10; $i++)
                            $tab[] = $i;
                            un print_r($tab); afficheras:
                            array(
                            [0] => 0,
                            [1] => 1,
                            ...,
                            [9] => 9);



                            Oui oui, je suis d'accord ^^ ( d'ailleurs le $tab = array(); n'est pas obligatoire ;) )
                            Mais message[] entre guillemet simple va créer un cookie appellée << message[] >>. Ne serait-ce pas plutot comme ca : setcookie($message[$i], ...); ?
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Taille maximum des cookies

                            × 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