Plusieurs cookies ds une page ...

Discussion dans 'Web, design' créé par kEr0, 3 Juin 2003.

Statut de la discussion:
Fermée.
  1. Offline
    kEr0 ex membre
    J'ai appris que si l'ont met plusieurs cookie dans une page, il s'annulent l'un après l'autre ... Qqun peut me faire une sorte de tuto bien comprhéensible plz ??? Pcque j'pige po trop cmt ca fonctionne ces trucs ...

    Pour exemple si y faut, ... Je dois en utiliser au moins un pour la selection du style (css) et un pour la langue du site ...
    kEr0, 3 Juin 2003
    #1
  2. Offline
    kEr0 ex membre
    J'ai vu un truc de ce genre ...

    Code:
    <?
    $compte++;
    SetCookie("Compte", $compte);
    SetCookie("Caddie[$compte]", $item);
    ?>
    
    Donc je pourrais faire ceci ? :

    Code:
    <?
    $cookie++;
    SetCookie("Lang[$cookie]", $language);
    SetCookie("Style[$cookie]", $stylecss);
    ?>
    Alors ? :roll:
    kEr0, 3 Juin 2003
    #2
  3. Offline
    RedCross ex membre
    Sorry, je sais pas t'aider. Ça m'intéresse à fond de savoir.

    Par contre je me demande pourquoi tu mets pas les 2 infos dans un seul cookie. Enfin, ça me regarde p'têtre pas :D
    RedCross, 3 Juin 2003
    #3
  4. Offline
    kEr0 ex membre
    Euh on sais faire ca ? Et comment ?

    Code:
    <? 
    SetCookie("Portal", "$language , $stylecss"); 
    ?>
    Comme ca ?? J'en sais rien moi .. Mais dès j'pose un truc sur le php ici ... Jms personne pour me répondre pffff :evil:
    kEr0, 3 Juin 2003
    #4
  5. Offline
    Azinou Ancienne LV
    p'tetre paske tu pose des truc tro kompliker ossi :roll:
    j'y connais rien o php moa... :oops:
    Azinou, 3 Juin 2003
    #5
  6. Offline
    kEr0 ex membre
    Mouais ... UP :)
    kEr0, 3 Juin 2003
    #6
  7. Offline
    kEr0 ex membre
    Bon v'la mon code fini (pr le mom) :

    Code:
    <? // On crée la post-incrémentation des cookies.
       $cookie++;
    ?>
    
    <? // Choix du language.
       // On crée le cookie gardant en mémoire la langue choisie par l'utilisateur.
       SetCookie("kero_portal[$cookie]", $language);
    
       if($language == 'FR') // Si le language sélectionné est "FR", la langue devient le Français.
                            {
                             $language_path = ''.$portal_lang_path.'/French/';
                            }
       else // Si pas de language sélectionné, la langue sera le Français.
           {
            $language_path = ''.$portal_lang_path.'/French/';
           }
    
       // On inclus le(s) fichier(s) de base dans la langue choisie.
       include(''.$language_path.'lang_main.'.$phpEx.'');
    ?>
    
    <? // Choix du style [CSS].
       // On crée le cookie gardant en mémoire le style choisi par l'utilisateur.
       SetCookie("kero_portal[$cookie]", $stylecss);
    
       if($stylecss == 'BLACK_ORANGE') // Si le style sélectionné est "BLACK_ORANGE", le style devient "BLACK_ORANGE".
                                      {
                                       $style_file = ''.$portal_styles_path.'black_orange.'.$phpEx.'';
                                      }
       else // Si pas de style sélectionné, le style devient "BLACK_ORANGE"
           {
            $style_file = ''.$portal_styles_path.'black_orange.'.$phpEx.'';
           }
    
       // On inclus le(s) fichier(s) de base dans la langue choisie.
       include($style_file);
    ?>
    Je sais pas si ca fontionne, mais bon ... See you ... :wink:
    kEr0, 3 Juin 2003
    #7
  8. Offline
    RedCross ex membre
    SOrry Kero, le but est bien de faire évoluer ce forum html vers la haut niveau qualité et temps de réponse ;)
    Peros, je touche au php, mais j'suis pas vraiement une bête non plus.

    T'as déjà jeté un oeil sur le manuel ?
    http://www.php.net/manual/fr/function.setcookie.php
    RedCross, 3 Juin 2003
    #8
  9. Offline
    kEr0 ex membre
    Si j'en lis ca :

    Je pense que mon code doit être bon ... :roll: Si qqun qui s'y connait passe ENFIN, qu'il puisse donner son avis ..
    kEr0, 3 Juin 2003
    #9
  10. Offline
    SUEd Touriste
    alors, tu peux mettre plusieurs infos dans une seule cookie !

    Pour cela, il faut utiliser la commande serialize() et unserialize() :)

    Il me semble en avoir parler et l'avoir déjà expliqué dans un autre post de ce forum !!!:)

    https://www.gamerz.be/forum/viewtopic.php/t-35826.html

    tu vas au niveau de mon post et on explique pour mettre plusieurs infos dans une seule cookie ;)
    SUEd, 3 Juin 2003
    #10
  11. Offline
    kEr0 ex membre
    Je vois mais +- ... Tu pourrais pas modif mes cookies sur mon code ? En mettant par en orange les ligne de cookie ke tu changes plz ??? Pour que tout soit correct :oops: ?
    kEr0, 3 Juin 2003
    #11
  12. Offline
    SUEd Touriste
    Création de la cookie :
    Code:
    <?
    $var['lang'] = $language;
    $var['theme'] = $theme;
    $donnees = serialize($var);
    setcookie("kero_portal", $donnees);
    ?>
    Vérif de l'exitence d'une cookie et si c'est le cas, création des variables (sinon, variable par défaut) :
    Code:
    <?
    if (isset($HTTP_COOKIE_VARS['kero_portal'])) {
       $var = unserialize (stripslashes ( $HTTP_COOKIE_VARS['kero_portal'] ) );
       $language = $var['lang'];
       $theme = $var['theme'];
    }
    else {
       // pas de cookies donc, mettre les choix par défaut
       // par exemple, ce qui suit :
       $language = "FR";
       $theme = "BLACK_ORANGE";
    }
    ?>
    choix des fichiers suivant les valeurs des variables :
    Code:
    <?
    switch($language) {
       case "FR": $lang_path = "fr/xyz.php"; break;
    }
    switch($theme) {
       case "BLACK_ORANGE": $theme_path = "bl_or/xyz.php"; break;
    }
    ?>
    on finit avec les includes :
    Code:
    <?
    include($lang_path);
    include($theme_path);
    ?>
    voilà un exemple, à toi de l'adapter !:p
    SUEd, 3 Juin 2003
    #12
  13. Offline
    Azinou Ancienne LV
    rien a voir mais,...
    c bon les ookies :)
    ok g :arrow:
    Azinou, 3 Juin 2003
    #13
  14. Offline
    kEr0 ex membre
    BOn , bon ... J'ai ca now :

    Code:
    <? // On crée le cookie.
       $cookie_var['lang'] = $language;
       $cookie_var['style'] = $stylecss;
       $cookie = serialize($cookie_var);
       SetCookie("kero_portal", $cookie);
    ?>
    
    <? // On crée les variables du cookie si celui-ci n'en contient pas encore.
       if(isset($HTTP_COOKIE_VARS['kero_portal']))
                                                  {
                                                   $cookie_var = unserialize(stripslashes($HTTP_COOKIE_VARS['kero_portal']));
                                                   $language = $cookie_var['lang'];
                                                   $stylecss = $var['style'];
                                                  }
       // On crée tous les "ElseIf" pour les langues.
       elseif($language == 'FR') // Si le language sélectionné est "FR", la langue devient le Français.
                                {
                                 $language_path = ''.$portal_lang_path.'/French/';
                                }
       // On crée tous les "ElseIf" pour les styles.
       elseif($stylecss == 'BLACK_ORANGE') // Si le style sélectionné est "BLACK_ORANGE", le style devient "BLACK_ORANGE".
                                          {
                                           $style_file = ''.$portal_styles_path.'black_orange.'.$phpEx.'';
                                          }
       else // Si pas de cookie, on met les choix par défaut.
           {
            $language = "FR";
            $stylecss = "BLACK_ORANGE";
           }
    ?>
    
    <? // On inclus les fichiers d'après le cookie.
       // On inclus le(s) fichier(s) de base dans la langue choisie.
       include(''.$language_path.'lang_main.'.$phpEx.'');
       // On inclus le(s) fichier(s) de base dans la langue choisie.
       include($style_file);
    ?>
    Oui je transfo tjrs un peu a chak fois :p :D

    Euh par contre ... Cmt k'on fait un formulaire en menu deroulant avec raffraichissement de la page pour ca ?? :oops:
    (Avec bouton SUBMIT je préfère) ...

    Un exemple pour la langue suffit, je saurai le transformer pour le style :p
    kEr0, 3 Juin 2003
    #14
  15. Offline
    kEr0 ex membre
    Up :roll:
    kEr0, 3 Juin 2003
    #15
  16. Offline
    SUEd Touriste
    à la place d'utiliser des elseif (comme tu le fais et qui, à mon avis, foireront), utilise des switch, c'est plus simple !!! :p

    Code:
    switch($var) {
       case "xx":
          instruction11;
          instruction12;
          etc;
          break;
       case "yy":
          instruction21;
          instruction22;
          etc;
          break;
       default:
          instruction31;
          instruction32;
          break;
    }
    en fait, le switch évalue la valeur de $var et ensuite, il compare aux différents cas que tu as prévu (case).
    S'il trouve le bon cas, il fait la suite d'instructions que tu as prévue et lorsqu'il rencontre le break; il sort du switch().
    S'il ne trouve pas le bon cas, alors, il fait le cas par défaut (default).
    Il ne faut donc jamais oublier de break; à la fin de chaque cas ;)

    Sinon, tu apprendras avec le temps que c'est bien plus clair (surtout si tu veux faire des modifications par la suite) de séparer les choses (partie qui s'occupe des cookies, partie pour les langues, partie pour les themes).

    Si jamais tu veux encore modifier à ta façon, et garder ton if etc...
    alors, syntaxiquement, tes elseif sont faux ! (le PHP étant un langage très flexible, ca pourrait ptet fonctionner, mais c'est pas propre du tout ! :)

    il vaut mieux faire :
    Code:
    if ....... // cookie existe
    else // cookie n'existe pas
    
    if .......... // langue = fr
    elseif ...... // langue = en
    elseif ....... // langue = nl
    else // langue par défaut
    
    if ......... // theme = black orange
    elseif ...... // theme = orange orange :P
    else // theme par défaut
    (sorry de pas avoir retaper toutes les conditions, mais j'avais po envie de tout copier/coller :p)
    SUEd, 3 Juin 2003
    #16
  17. Offline
    kEr0 ex membre
    Mouais bon je pense avoir compris cmt ca fonctionne now ... :oops:

    Euh je modif a "TA FACON" pi je remet le code ici ... Tu pe me dire pr les menu deroulante plz ?

    avec ossi boite de msg disant : langue X chosie pi qd on appuie sur ok ca recharge la page ... :roll:
    kEr0, 3 Juin 2003
    #17
  18. Offline
    niafron ex membre
    bon c des couilles
    si tu veux plusieurs cookies il fo kils aient des nom different


    -- oui sued a raison aussi ( pour les cookies c une eme possibilite ) --

    pour le reste g pas tout compris donc SUed a raison ( lol )
    niafron, 3 Juin 2003
    #18
  19. Offline
    SUEd Touriste
    pour le formulaire, je te fais un truc "type" :)

    Code:
    <?
    // on affiche le formulaire (dans tous les cas)
    echo "
       <form method=\"POST\" action=\"".$PHP_SELF."\">
       <select size=\"1\" name=\"Menu\">
          <option selected value=\"1\">Accueil</option>
          <option value=\"2\">Membres</option>
       </select>
       <input type=\"submit\" name=\"submit\" value=\"Go!\">
       </form>
    ";
    if (!empty($submit)) { // dans le cas où on a appuyé sur Go!
       switch($Menu) {
          case 1: $page = "accueil.php"; break;
          case 2: $page = "membres.php"; break;
          default: $page = "accueil.php"; break;
       }
    }
    ?>
    Le switch permet de garnir la var $page avec le nom de la page à inclure :)

    il ne te reste donc plus qu'à mettre un include à l'endroit où la page doit être incluse :)

    Bon, ça, c'est un truc général ! :)
    Je te conseille vivement de le modifier car c'est vraiment général et pour l'inclure dans un design, faut le modifier :) c'est juste pour que tu captes le principe ;)
    SUEd, 3 Juin 2003
    #19
  20. Offline
    SUEd Touriste
    bin, en fait, le pb, c'est que tu faisais :
    Code:
    if cookie existe
    elseif lang = fr
    elseif theme = blackorange
    else // cookie n'existe pas
    ce qui n'est pas super logique quoi :)
    il vaut mieux séparer les notions (cookie, langue, theme) en plusieurs if :)
    Maintenant, que tu utilises le switch ou le if, c'est ton problème :p mais par la suite, tu seras content d'avoir séparer les notions, si jamais tu dois faire des modifications :p
    SUEd, 3 Juin 2003
    #20
Statut de la discussion:
Fermée.