Javascript et cookies ?

Fermé
help me - 19 août 2009 à 21:58
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 - 20 août 2009 à 01:25
Bonjour,
j utilise ce script pour afficher une page des news une fois par semaine pour chaque visiteur unique .
comment je peux modifie ce script pour afficher les news 2 fois par semaine pour chaque visiteur unique ?
voici le script . merci de votre aide

<SCRIPT LANGUAGE="JavaScript">
var nbJour =7; 
var page = "News.html";

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;
}

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" : "");
}

function DeleteCookie (name) {  
	var exp = new Date();  
	exp.setTime (exp.getTime() - 1);  
	var cval = GetCookie (name);  
	document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}

var exp = new Date(); 
exp.setTime(exp.getTime() + (nbJour*24*60*60*1000));

function getCookieVal(offset) {
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
	endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}


function verifNbOuverture() {
	var cpt = GetCookie('cpt');
	if (cpt == null) {
		cpt=2;
		SetCookie('cpt', cpt, exp);

		document.location.href = page;
	}
	else {
		cpt++;
		SetCookie('cpt', cpt, exp);
		}
}

verifNbOuverture();

</script>

2 réponses

Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
19 août 2009 à 23:06
Dis-moi, c'est du script de la vieille école que tu nous as trouvé là :p

Sans regarder, je dirais que la solution à ton problème se trouve à la première ligne de ton code. une variable qui s’appelle nbJours et qui est égale à 7, dans un script qui renouvelle un cookie tous les sept jours, hmm, tiens, doit y avoir un truc…

En regardant un peu mieux j’ai l’impression qu’il manque quelque chose, mais ce n’est peut-être qu’une impression.

Si tu ne trouves pas solution à ton problème, j’y regarderai d’un peu plus près ;)
0
bonjour
oui var nbJour =7; c est pour que le cookies reste 7 jour au navigateur du visiteur pour pas a chaque fois qui visite
mon site la fenetre de news s ouvre :)
donc je veut que la page news s ouvre 2 fois par semaine , meme au meme journer ,apres le visiteur doit attendre 7 jours pour qu'il puis regarder les nouveaux news .
merci d avance
0
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
20 août 2009 à 01:25
C’est toi qui as fait le code ? Ça ressemble à du C* ou du Java (le « return null » ou encore la gestion pour ainsi dire particulière des arguments dans Setcookie). Comme dirait Christophe Porteneuve, et sans vouloir vexer qui que ce soit (^^), « à vouloir écrire du Java comme on faisait du C++, on ne produit que du mauvais Java ». Surtout ne le prends pas mal, je suis d’humeur sarcastique ce soir… Sinon, je disais vieille école à cause des balises en majuscules et de l’attribut langage qui est déprécié (à la place il faut mettre type="text/javascript" pour satisfaire à la norme MIME).

Enfin bref, j’avais pas compris ta question, je croyais que tu voulais doubler la fréquence des news (genre passer nbJours à 3 ou 4).

Bien. Pour ton problème, j’ai envie de dire : cpt-- à la place de cpt++ dans la fonction verifNbOuverture, et un test if(cpt > 0) qui autorise l’accès aux news (j’imagine que le « document.location.href = page » conduit aux news).

J’espère que je me gourre pas ;)
0