[php] teller unieke ips doet het niet goed

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Zucht388
  • Registratie: Juni 2001
  • Laatst online: 02-05-2024
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$bestandsnaam = "hits2.txt";

$bestand = file ($bestandsnaam);
$bestand = array_unique($bestand);
$geteldebezoeken = count($bestand);

echo "Aantal unieke hits: $geteldebezoeken";

$bestandopenenmetrechten = fopen ($bestandsnaam , "r");
$inhoud = fread ($bestandopenenmetrechten , filesize ($bestandsnaam));
fclose ($bestandopenenmetrechten);

$bestandopenenmetrechten = fopen ($bestandsnaam , "w");
$nieuwentry = $inhoud."\n".getenv("REMOTE_ADDR");
$dus= fwrite ($bestandopenenmetrechten , $nieuwentry);
fclose ($bestandopenenmetrechten);

?>


maar in hits2.txt doet hij de ips niet netjes onderelkaar zetten en dus telt hij het aantal unieke ips niet geod :(

wat doe ik fout?

[ Voor 16% gewijzigd door Zucht388 op 15-12-2002 18:37 ]

Who the hell is general failure and why is he reading of my hard-drive?


Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Gebruik \r\n in plaats van \n :?

Acties:
  • 0 Henk 'm!

  • Zucht388
  • Registratie: Juni 2001
  • Laatst online: 02-05-2024
ff proberen maar :P

edit:

neej :(

hij doet het nu op een nieuwe regel maar ik ben de enige die de pagina bezoekt en dit staat er in de log:

213.193.0.228
213.193.0.52
213.193.0.203
213.193.0.203
213.193.0.79

en daar zit mijn ip niet tussen :|

hij tlet het gewoon als 5

[ Voor 112% gewijzigd door Zucht388 op 15-12-2002 18:35 ]

Who the hell is general failure and why is he reading of my hard-drive?


Acties:
  • 0 Henk 'm!

Verwijderd

Volgens mij moet ie zo werken hoor.

Acties:
  • 0 Henk 'm!

  • Zucht388
  • Registratie: Juni 2001
  • Laatst online: 02-05-2024
Hij doet het niet mattie smzweep zoals je wel weet (totaal geen weet van php jij :D)

maar bedankt voor het kicken van me topic :D

Who the hell is general failure and why is he reading of my hard-drive?


Acties:
  • 0 Henk 'm!

Verwijderd

Erm, ik heb toevallig gisteren een PHP stats scriptje in elkaar gedraaid. Het schrijft unieke gebruikers (sessies) naar een text file op de server. Hebben? Meel me.

[ Voor 3% gewijzigd door Verwijderd op 15-12-2002 19:21 ]


Acties:
  • 0 Henk 'm!

  • Zucht388
  • Registratie: Juni 2001
  • Laatst online: 02-05-2024
Neej bedankt ik wil het toch liever zelf proggen en weten waarom hij nou niet werkt :)

Who the hell is general failure and why is he reading of my hard-drive?


Acties:
  • 0 Henk 'm!

Verwijderd

Na even snel testen op mijn server kwam ik er achter dat je sowieso beter de \r\n achter het ipadres kunt zetten, anders zag hij een regel met en een regel zonder de \r\n als verschillend (en dat heeft als gevolg dat je een entry in je array krijgt en dus een getelde bezoeker meer).

Zoiets dus:
PHP:
1
$nieuwentry = $inhoud . getenv("REMOTE_ADDR") . "\r\n";


Hij doet het bij mij nu wel goed in elk geval.
Overigens kun je beter eerst even je hits2.txt leeggooien op het moment dat je dit veranderd hebt.

edit:
Nog even een extra opmerking.
Ik weet niet hoe je dit precies gaat gebruiken, maar je moet je wel realiseren dat je elke hit opslaat. Zelfs als je weinig bezoekers hebt wordt dat na verloop van tijd best een groot bestand :)
Daarnaast sorteer je hem elke keer. Je zou bijvoorbeeld om de honderd keer de uitkomst van de array_unique terug kunnen schrijven, dan hoef je niet steeds het volledige bestand te sorteren.
Maar als het echt goed wilt doen is dat ook niet zo'n fantastische oplossing.

edit2:
En er schiet me nog wat te binnen:
Je gaat het bestand eerst volledig lezen en daarna precies hetzelfde terugschrijven met een extra regel.
Misschien is het makkelijker om gewoon iets dergelijks te doen:
PHP:
1
2
3
$bestandopenenmetrechten = fopen ($bestandsnaam , "a"); 
fwrite ($bestandopenenmetrechten , getenv("REMOTE_ADDR") . "\n\r"); 
fclose ($bestandopenenmetrechten);


De "a" zorgt er voor dat je alleen kunt schrijven en dat de pointer aan het eind van de file gezet wordt. Je kunt dan dus meteen het ipadres wegschrijven en de file sluiten.

[ Voor 71% gewijzigd door Verwijderd op 16-12-2002 17:10 ]


Acties:
  • 0 Henk 'm!

  • Zucht388
  • Registratie: Juni 2001
  • Laatst online: 02-05-2024
Hey fenks!

Who the hell is general failure and why is he reading of my hard-drive?


Acties:
  • 0 Henk 'm!

Verwijderd

Pagina: 1