hey
ik probeer zelf een counter te maken die elke 24 uur reset maar ik heb problemen met het vergelijken van de datums met elkaar en dit geeft uds problemen met het wegschrijven naar de bestanden voor de gegevens bij te houden
hier het deel van de code waar ik problemen op heb

<?php
$counter ='counter/counter.txt';
$ipfile = 'counter/ip.txt';
$date = 'counter/date.txt';

function inc_count(){
$ip = $_SERVER['REMOTE_ADDR'];
GLOBAL $counter, $ipfile, $date;

// from here
$fid = fopen ($date , "r+");
$filedatum = fgets($fid);
$vandaag = date('Y/m/d');
if(!$vandaag == $filedatum){
$fip = fopen ($ipfile , "w+");
fwrite($fip, "");
fclose($fip);
fwrite($fid, "");
fwrite($fid, date('Y/m/d'));
}
$lengt = file_get_contents($date);
if (strlen($lengt) == 0){
fwrite($fid, date('Y/m/d'));
}
fclose($fid);

// to here

rest van de code is weg gehaald omdat er geen fouten inzitten
?>
Echo $filedatum eens.
ik had er een datum van gisteren in gestoken ik krijg deze 2013/03/10
( hij verandert mijn datum niet waardoor hij dus ook het ip file niet leeg maakt en dus ook geen extra mensen bij de counter telt)
Dit werkt niet echt.

Leg eens duidelijk uit wat je precies wilt met die drie bestandjes.
in de ipfile worden de ip's van de bezoekers bijgehouden
in de counter worden het aantal mensen bij gehouden ( de hits van de page)
in de datumfile word de datum bijgehouden van de dag dat de eerste persoon der op komt

als ik op de site kom dan word mijn ip opgeslagen, counter +1 gedaan, en de datum van vandaag in de datumfile gestoken. als ik er morgen weer op kom moet als datum vandaag niet gelijk is aan de datum in de datumfile, de datum worden aangepast en de ipfile met een write($fip,""); worden geleecht en dan kan ik opnieuwe een hit op de page veroorzaken dus een uniek hit counter die op een eigenaardige manier elke dag word gereset ( sorry van al die fouten ik heb dyslexia)
Zitten er dan niet meerdere ip's in de ip-file?
Kan elk ip de counter maar één keer per dag verhogen of ook bij een refresh van de pagina?
Elke nieuwe dag begin je helemaal opnieuw?

Lijkt een beetje op unieke bezoekers per dag tellen.

Is een database niet handiger?
counter word nooit gereset de ip's wel en ja der zitten meerdere ip's in normaal ma ik test op xamp dus enkel mijn ip het is gewoon een hitcounter dat elke dag zijn ip's reset

de problemen zijn de ip's worden niet verwijdert
en de datum word niet overschreven
Kijk eens naar regel 14:
if(!$vandaag == $filedatum)

De operator '!' bindt sterker dan '=='. Eigenlijk staat er dus:
if((!$vandaag) == $filedatum)

en dat zal waarschijnlijk nooit waar zijn.

Wat jij wilt is:

if(!($vandaag == $filedatum))
of
if($vandaag != $filedatum)


Overigens zou ik dit soort dingen zelf ook liever in een database doen.
Willem vp op 11/03/2013 21:37:37

Kijk eens naar regel 14:
if(!$vandaag == $filedatum)

De operator '!' bindt sterker dan '=='. Eigenlijk staat er dus:
if((!$vandaag) == $filedatum)

en dat zal waarschijnlijk nooit waar zijn.

Wat jij wilt is:

if(!($vandaag == $filedatum))
of
if($vandaag != $filedatum)


Overigens zou ik dit soort dingen zelf ook liever in een database doen.


ik heb al van alles soorten geprobeert zelf al met kleiner dans groter dans == of != hij doet niet wat ik vraag
Zoals het nu staat, gaat het in ieder geval niet werken ;-)

Heb je al eens gekeken wat de waardes van $vandaag en $filedatum zijn? Mogelijk haalt het script net iets anders op uit het bestand dan je verwacht. Uit je opmerking "ik had er een datum van gisteren in gestoken" maak ik op dat je zelf het bestand hebt gewijzigd. In dat geval is de kans groot dat er een newline achter de datum staat en dat kan wel eens problemen geven met vergelijken.

Voeg tussen regel 13 en 14 eens dit in:

echo "<pre>*$vandaag*\n*$filedatum*</pre>";

Waarschijnlijk zal de tekst tussen de ** verschillen.
ik heb het na 15 gezet anders kent hij de variabele $vandaag niet en de waarde dat ik krijg is
*2013/03/11* deze datum is welke van mijn machine is
*2013/03/10* deze waarde is de waarde die in het bestandje staat

Reageren