• [^] # Re: Cookies

    Posté par (site web personnel) . En réponse au message Menu arborescent pliable et conservation de l'état lors de la navigation. Évalué à 3.

    Si tu veut, voici le code que nous a fournit notre prof d'algo en debut d'année (oui on a des cours de javascript dans ma formation \o/ )


    // Fonctions pour stocker les cookies sur l'ordinateur client
    function SetCookie (name, value)
    {
    var argv=SetCookie.arguments;
    var argc=SetCookie.arguments.length;
    var expires=(argc > 2) ? argv[2] : null;
    var path=(argc > 3) ? argv[3] : null;
    var domain=(argc > 4) ? argv[4] : null;
    var secure=(argc > 5) ? argv[5] : false;
    document.cookie=name+"="+escape(value)+
    ((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
    ((path==null) ? "" : ("; path="+path))+
    ((domain==null) ? "" : ("; domain="+domain))+
    ((secure==true) ? "; secure" : "");
    }

    // Fonction pour lire le cookie sur l'ordinateur client a partir
    // de son rang (offset)
    function getCookieVal(offset)
    {
    var endstr=document.cookie.indexOf (";", offset);
    if (endstr==-1)
    endstr=document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
    }

    // Fonction qui permet de trouver le rang du cookie a partir de
    // son nom
    function GetCookie (name)
    {
    var arg=name+"=";
    var alen=arg.length;
    var clen=document.cookie.length;
    var i=0;
    while (i<clen) {
    var j=i+alen;
    if (document.cookie.substring(i, j)==arg)
    return getCookieVal (j);
    i=document.cookie.indexOf(" ",i)+1;
    if (i==0) break;}
    return null;
    }

    var pathname=location.pathname;
    var myDomain=pathname.substring(0,pathname.lastIndexOf('/')) +'/';
    var date_exp = new Date();
    date_exp.setTime(date_exp.getTime()+(365*24*3600*1000));
    // Ici on définit une durée de vie de 365 jours


    Apres il suffit de faire un
    SetCookie("nomducookie",valeurducookie,date_exp,myDomain);
    et
    GetCookie("nomducookie");

    Le date_exp pouvant être changé, le myDomain se determinant tout seul comme un grand.

    (pub honteuse) Des exemples à la pelle ici:
    http://src.momo.servegame.org/algo/