Bezoekersteller gaat te hard van stapel

Status
Niet open voor verdere reacties.

GhastlyMIB

Gebruiker
Lid geworden
5 jun 2007
Berichten
368
Hey,

ik heb al een tijdje een bezoekersteller voor onze site van de buurtvereniging.
Het is behoorlijk irritant dat deze ook de zoekmachines telt.

Is er een manier om zit uit te zetten? Dus niet meer die zoekmachines bijhoud.
Eventueel alleen nederlandse IP's.. Want de teller loopt veel te snel op.
Om al die ip's te blokkeren van de zoekmachines is denk ik geen optie.

Bedankt,
Mathijs
 
Javascriptje gebruiken om de teller te genereren, zoekmachine's gebruiken geen javascript dus die zullen em niet activeren :)

Moet je een javascript post-back maken naar een speciale URL waarin geteld wordt, ipv het op de hoofd pagina te doen.
 
De teller heb ik zelf gemaakt, en echt een andere kan ik niet vinden.
Maar de javascript zal wel een oplossing zijn ja als de zoekmachines die negeren.

Heb je een voorbeeld voor zo'n oproep naar een pagina?
Simpel javascriptje?
Van html en php weet ik wel wat, maar van javascript is mijn kennis maar mager.

Bedankt,
Mathijs
 
Sure.

Dit is een mini-AJAX library van Google, die moet je in een .js file zetten en includen in je pagina:

HTML:
function $(e){if(typeof e=='string')e=document.getElementById(e);return e};
function collect(a,f){var n=[];for(var i=0;i<a.length;i++){var v=f(a[i]);if(v!=null)n.push(v)}return n};

ajax={};
ajax.x=function(){try{return new ActiveXObject('Msxml2.XMLHTTP')}catch(e){try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(e){return new XMLHttpRequest()}}};
ajax.serialize=function(f){var g=function(n){return f.getElementsByTagName(n)};var nv=function(e){if(e.name)return encodeURIComponent(e.name)+'='+encodeURIComponent(e.value);else return ''};var i=collect(g('input'),function(i){if((i.type!='radio'&&i.type!='checkbox')||i.checked)return nv(i)});var s=collect(g('select'),nv);var t=collect(g('textarea'),nv);return i.concat(s).concat(t).join('&');};
ajax.send=function(u,f,m,a){var x=ajax.x();x.open(m,u,true);x.onreadystatechange=function(){if(x.readyState==4)f(x.responseText)};if(m=='POST')x.setRequestHeader('Content-type','application/x-www-form-urlencoded');x.send(a)};
ajax.get=function(url,func){ajax.send(url,func,'GET')};
ajax.gets=function(url){var x=ajax.x();x.open('GET',url,false);x.send(null);return x.responseText};
ajax.post=function(url,func,args){ajax.send(url,func,'POST',args)};
ajax.update=function(url,elm){var e=$(elm);var f=function(r){e.innerHTML=r};ajax.get(url,f)};
ajax.submit=function(url,elm,frm){var e=$(elm);var f=function(r){e.innerHTML=r};ajax.post(url,f,ajax.serialize(frm))};
(Je hoeft niet precies te weten hoe het werkt)

Vervolgens zet je op je pagina een body onload tag, waar je de teller aanroept.

Code:
<body onLoad="ajax.update( 'teller.php', 'teller' );">

Vervolgens wordt de file teller.php aangeroepen, en wordt alles wat die als echo stuurt opgenomen in het veld met als id 'teller'.
Zorg dus dat die .php file de teller met 1 ophoogt, en vervolgens het HTML element dat de teller bevat echo't, met de nieuwe waarde :)

Je kunt het testen door javascript uit te zetten, dan zou het hele element niet moeten verschijnen, en ook niet opgehoogd moeten worden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan