IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Cookies et compteur de visite


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 13
    Par défaut Cookies et compteur de visite
    Bonjour,
    J'ecris un petit script qui affiche le nom d'un visiteur, et le nombre de visite de ce dernier. Le tout est stocké dans un cookie. C'est un exercice que je fais par rapport a mes cours en javascript et ca ne fonctionne pas chez moi. Sur internet explorer il m'affiche comme erreur "objet attendu" ligne 11 là ou il y a la variable nom = getCookie.

    fichier html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <html>
    	<head>
    		<title>Exercices</title>
     
    		<script type="text/javascript" src="javascrupt.js"></script>
    	</head>
    	<body>
     
     
    	<script type="text/javascript">
    var nom = getCookie('visiteur');
    var visites;
    if (nom == ""){
        nom = prompt("Votre nom :");
        setCookie("visiteur", nom, 365);
        visites = 0;  
    } else 
        visites = Number( getCookie("nombreVisites") );
    Visites ++;
    setCookie("nombreVisites", Visites, 365);
     
    document.write("<p class='message'>Bonjour " + nom + ". C'est votre " + visites + "<sup>ème</sup> visite.</p>");
    	</script>
    	</body>
    </html>
    Fichier javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    function setCookie(name, value, days){
    var text = name + "=" + escape(value);
     
    if(days !=0){
    	var ms = days * 24*60*60*1000;
    	var now = new Date();
    	now.setTime(now.getTime() + ms);
     
    	text  += ";expires=" + now.toGMTString();
    	}
    	document.cookie = text;
    }
     
     
    function getCookie(name){
    var debut = document.cookie.indexOf(name);
    if(debut  ==-1){
    	return "";
    	}
    var fin = document.cookie.indexOf(";", debut) 
    if(fin == -1){
    	return document.cookie.length;
    	}
     
    var contenu = document.cookie.substring(debut + name.length +1, fin);
    	return unescape(contenu);
    	}
     
    function deleteCookie(name){
    	setCookie(name, "", -1);
    }

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    es tu sûr du nom de ton fichier javascrupt.js, de son chemin par rapport à ton document...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 13
    Par défaut
    Le fichier javascrupt est dans le même dossier que le fichier html qui l'appelle donc oui je ne comprends pas pourquoi ca fonctionne pas chez moi.

  4. #4
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    La méthode de recherche dans la fonction getCookie() n'est pas très fiable.

    À comparer avec celle de la fonction readCookie située sur le cours : La gestion des cookies en JavaScript.

    Un exemple de code utilisant ces fonctions...
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    	<title>Cookies</title>
     
    	<style type="text/css">
                    .bloc{margin-left:32px;}
                    #message {color:#003366;font-size:1.2em;}
            </style>
     
    	<script type="text/javascript">
                    // gestion des cookies
                    function createCookie(name,value,days) {
                            if (days) {
                                    var date = new Date();
                                    date.setTime(date.getTime()+(days*24*60*60*1000));
                                    var expires = "; expires="+date.toGMTString();
                            }
                            else var expires = "";
                            document.cookie = name+"="+value+expires+"; path=/";
                    }
     
                    function readCookie(name) {
                            var nameEQ = name + "=";
                            var ca = document.cookie.split(';');
                            for(var i=0;i < ca.length;i++) {
                                    var c = ca[i];
                                    while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                            }
                            return null;
                    }
     
                    function eraseCookie(name) {
                            createCookie(name,"",-1);
                    }
     
                    // Demo
                    var pseudo=readCookie('pseudo');
                    pseudo=(pseudo)?pseudo.replace(/\</g,'&lt;').replace(/\>/g,'&gt;'):'invité(e)';
     
                    var visites=readCookie('visites');
                    if(visites==null)visites=0;
                    createCookie('visites',++visites,7);
     
                    function newPseudo(){
                            eraseCookie('pseudo');
                            pseudo=document.getElementById('pseudo').value;
                            if(pseudo!='')createCookie('pseudo',pseudo,7);
                    }
     
                    window.onload=function(){
                            document.getElementById('message').innerHTML='Bonjour <strong>'+pseudo+'<\/strong>, ceci est votre <strong>'+visites+'<\/strong><sup>è'+((visites==1)?'r':'m')+'e<\/sup> visite.';
                    }
            </script>
    </head>
    <body>
    	<h1>Cookies</h1>
    	<p>Bien entendu la demo fonctionne si les cookies sont acceptés par le navigateur.</p>
    	<p>
    		À chaque actualisation de la page, le script determine la présence du cookie 'pseudo'. Si ce dernier n'existe pas, le script affichera 'invité(e)'<br />
    		Le cookie 'visites' permet de compter le nombre d'affichage de la page.
    	</p>
    	<div class="bloc">
    		<p id="message"></p>
    		<form action="" method="get" onsubmit="newPseudo();history.go(0);return false;">
    			<p>
    				<input type="text" id="pseudo" name="pseudo" value="" /> <input type="submit" value="Nouveau pseudo" /><br /><br />
    				<button onclick="history.go(0);">Actualisation de la page</button>**
    				<button onclick="eraseCookie('visites');history.go(0);">Remise à zéro du nombre de visites</button>**
    				<button onclick="alert(document.cookie);return false;">document.cookie</button>
    			</p>
    		</form>
    	</div>
    </body>
    </html>

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Javascript est sensible à la casse Visites est différent de visites, à voir également.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 13
    Par défaut
    Merci!
    Effectivement avec votre code cela fonctionne, mais je ne comprends toujours pas pourquoi avec le mien ça cloche.

Discussions similaires

  1. Greasemonkey compteur de visite avec cookie
    Par Benji2 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/08/2011, 02h13
  2. Réponses: 2
    Dernier message: 04/03/2008, 17h51
  3. [Cookies] Compteur de visite
    Par gtony dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2007, 22h30
  4. [Cookies] Un compteur de visite "intelligent"
    Par Rakken dans le forum Langage
    Réponses: 12
    Dernier message: 04/12/2006, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo