login  Naam:   Wachtwoord: 
Registreer je!
 Forum

php counter (Opgelost)

Offline beatnu - 23/03/2007 11:45
Avatar van beatnuNieuw lid beste,
ik heb een counter maar helaas is het nog niet zoals ik gewild had.
hij telt namelijk alle kliks op de site en niet de unieke bezoekers.
hier de code. zou iemand me kunnen helpen om van deze een unieke bezoekersteller van te maken aub!
  1. <?php
  2.  
  3. $COUNT_FILE = "count_data.txt";
  4. // Absolute path and name to count data file.
  5.  
  6.  
  7. $IMG_DIR_URL = "./digits/";
  8. // URL Directory of digits (0.gif ... 9.gif).
  9.  
  10.  
  11. $NB_DIGITS = 4;
  12. // Minimum number of digits to display (0, to not use 0 left).
  13.  
  14. $html_result = "";
  15.  
  16.  
  17.  
  18. if (file_exists($COUNT_FILE)) {
  19.  
  20.  
  21. $fp = fopen("$COUNT_FILE", "r+");
  22. flock($fp, 1);
  23. $count = fgets($fp, 4096);
  24. $count += 1;
  25. fseek($fp,0);
  26. fputs($fp, $count);
  27. flock($fp, 3);
  28. fclose($fp);
  29. } else {
  30. // En: Display a error message if file does not exist.
  31.  
  32. echo "Can't find file, check '\$file' var...<BR>";
  33. }
  34.  
  35.  
  36.  
  37. chop($count);
  38. $nb_digits = max(strlen($count), $NB_DIGITS);
  39. $count = substr("0000000000".$count, -$nb_digits);
  40.  
  41. $digits = preg_split("//", $count);
  42.  
  43. for($i = 0; $i <= $nb_digits; $i++) {
  44. if ($digits[$i] != "") {
  45. $html_result .= "<IMG SRC=\"$IMG_DIR_URL$digits[$i].gif\">";
  46. }
  47. }
  48.  
  49. ?>

kan iemand me helpen daar een unieke teller van te maken. alvast bedankt.

12 antwoorden

Gesponsorde links
Offline demich - 23/03/2007 13:30 (laatste wijziging 23/03/2007 13:31)
Avatar van demich Nieuw lid Je moet dan cookies gebruiken
aan het einde van je script moet je zetten:

  1. $naamcookie="teller";
  2. setcookie("".$naamcookie."[ingevuld,18600]");


waarbij 18600 = aantal seconden dat de cookie werkt.

Je moet ook deze code veranderen
  1. if (file_exists($COUNT_FILE)) {
  2.  
  3.  
  4. $fp = fopen("$COUNT_FILE", "r+");
  5. flock($fp, 1);
  6. $count = fgets($fp, 4096);
  7. $count += 1;
  8. fseek($fp,0);
  9. fputs($fp, $count);
  10. flock($fp, 3);
  11. fclose($fp)


in
  1. if (file_exists($COUNT_FILE)) {
  2.  
  3.  
  4. $fp = fopen("$COUNT_FILE", "r+");
  5. flock($fp, 1);
  6. $count = fgets($fp, 4096);
  7. if($_COOKIE["teller"]=="")
  8. {
  9. $count += 1;
  10. }
  11. fseek($fp,0);
  12. fputs($fp, $count);
  13. flock($fp, 3);
  14. fclose($fp)


dan werkt het

Offline beatnu - 23/03/2007 14:04
Avatar van beatnu Nieuw lid hmmm lukt niet echt, mss doe ik (terug ) iets mis.
  1. <?php
  2.  
  3. $COUNT_FILE = "count_data.txt";
  4. // Absolute path and name to count data file.
  5.  
  6.  
  7. $IMG_DIR_URL = "./digits/";
  8. // URL Directory of digits (0.gif ... 9.gif).
  9.  
  10.  
  11. $NB_DIGITS = 4;
  12. // Minimum number of digits to display (0, to not use 0 left).
  13.  
  14. $html_result = "";
  15.  
  16.  
  17.  
  18. if (file_exists($COUNT_FILE)) {
  19.  
  20.  
  21. $fp = fopen("$COUNT_FILE", "r+");
  22. flock($fp, 1);
  23. $count = fgets($fp, 4096);
  24. if($_COOKIE["teller"]=="")
  25. {
  26. $count += 1;
  27. }
  28. fseek($fp,0);
  29. fputs($fp, $count);
  30. flock($fp, 3);
  31. fclose($fp);
  32.  
  33. } else {
  34. // En: Display a error message if file does not exist.
  35.  
  36. echo "Can't find file, check '\$file' var...<BR>";
  37. }
  38.  
  39.  
  40.  
  41. chop($count);
  42. $nb_digits = max(strlen($count), $NB_DIGITS);
  43. $count = substr("0000000000".$count, -$nb_digits);
  44.  
  45. $digits = preg_split("//", $count);
  46.  
  47. for($i = 0; $i <= $nb_digits; $i++) {
  48. if ($digits[$i] != "") {
  49. $html_result .= "<IMG SRC=\"$IMG_DIR_URL$digits[$i].gif\">";
  50. }
  51. }
  52. $naamcookie="teller";
  53. setcookie("".$naamcookie."[ingevuld,18600]");
  54.  
  55. ?>

is het zo dat het dan moet? zoja... lukt het niet echt want hij telt dan nog altijd eentje op bij iedere klik op een link.
Offline Ultimatum - 23/03/2007 14:08 (laatste wijziging 23/03/2007 14:09)
Avatar van Ultimatum PHP expert @demich, hoezo maak jij die cookie raar aan dan?

1. je kan de naam gewoon direct in die cookie zetten ipv via een var
2. je hoeft $naamcookie helemaal niet te escapen dus haal die dubbele " maar weg..
3. een cookie heeft minstens 2 en maximaal 5 parameters, die van jou heeft er 1 
4. lees: http://www.site...amp;id=160
(punt 4 @ demich & beatnu )
Offline Ibrahim - 23/03/2007 14:10
Avatar van Ibrahim PHP expert Als je unieke hits wilt hebben, moet je controleren op IP (hoewel er sommige zijn met dynamische IPs), zit je IP al in je bestand, dan geen extra hit bijzetten, anders wel een extra hit bijzetten.
Offline beatnu - 23/03/2007 14:14
Avatar van beatnu Nieuw lid k, maar kan je dan een goeie oplossing geven (aangepaste code) aub.

zoals demich maar dan dat ie werkt (demich kan zijn dat jouwe ook werkt maar bij helaas niet @ the moment)
Offline Ultimatum - 23/03/2007 14:19
Avatar van Ultimatum PHP expert Zoals ik al zei is die setcookie niet goed, dus bekijk die tutorial ook maar even die ik gaf. En je moet idd de ips van de bezoekers opslaan. Hoe je dat doet moet je in de tutorial superglobals kijken want daar staat hoe je dat moet opzoeken..
Offline beatnu - 23/03/2007 15:55
Avatar van beatnu Nieuw lid mja k. maar vind niet echt een goeie oplossing.
niemand in de buurt die direct de oplossing ziet en zegt. dit moet je aanpassen (zo en zo).

kweet het het is lui van mij niet op te zoeken enz, maar ben al tijdje bezig eraan (beginneling) en khoop op positief antwoord.
Offline demich - 23/03/2007 18:04
Avatar van demich Nieuw lid Die eerste functie setcookie werkte bij mij dus wel want heb het gekopieerd van een werkend script bij mij mja je bent dus best dat het je eens zoals in de tutorial probeert.

Dan moet je dus
  1. setcookie("".$naamcookie."[ingevuld,18600]");

vervangen door
  1. setcookie("teller", "geteld", time()+3600);

doe dan de rest zoals bij mijn eerste antwoord en dan lukt het normaal gezien wel.
Offline phpfreak - 24/03/2007 14:08
Avatar van phpfreak PHP beginner Het beste is idd op ip loggen, je kan zon ip logger wel vinden bij scripts, want er zijn ook mensen die hun cookies verwijderen, niet dat het dan zoveel verschil gaat maken, maar sowiso verlopen cookies ook, je kan wél beter cookies gebruiken als je unieke bezoekers / dag logt, dan maakt et niet zoveel uit, mensen gaan niet 20x per dag ofzo hun cookies weg doen, tenzij ze het zooo leuk vinden om dat tellertje naar boven te zien gaan (maar dan moeten ze het ook al weten).
Natuurlijk, er zijn oko mensen, zoals sielicom al zei, met een dynamish ip, niets aan te doen natuurlijk 
Hopelijk lukt het 
Offline beatnu - 30/03/2007 11:21 (laatste wijziging 30/03/2007 11:21)
Avatar van beatnu Nieuw lid helaas werkt ie bij mij nog altijd niet, op men localhost wel (met easyphp) maar eens online blijft hij bij iedere klik een nummer bijtellen. (check: www.all-cleaning.org)
hier is de code, ziet iemand waar ik fout zit
  1. <?php
  2. //////////////////////////////////////////////////////////////
  3. // php counter + cookie (not finisht yet //
  4. // //
  5. // Door: Olivier VdV //
  6. // E-mail: olivier[punt]vdv[at]telenet[punt]be //
  7. // Web: http://www.dutch-smokerz.be //
  8. // all rights reseverd //
  9. //////////////////////////////////////////////////////////////
  10.  
  11.  
  12. $COUNT_FILE = "count_data.txt";
  13. // Absolute path and name to count data file.
  14.  
  15.  
  16. $IMG_DIR_URL = "./digits/";
  17. // URL Directory of digits (0.gif ... 9.gif).
  18.  
  19.  
  20. $NB_DIGITS = 4;
  21. // Minimum number of digits to display (0, to not use 0 left).
  22.  
  23. $html_result = "";
  24.  
  25. $naamcookie="teller";
  26. setcookie("teller", "geteld", time()+3600);
  27.  
  28. if (file_exists($COUNT_FILE)) {
  29.  
  30.  
  31. $fp = fopen("$COUNT_FILE", "r+");
  32. flock($fp, 1);
  33. $count = fgets($fp, 4096);
  34. if($_COOKIE["teller"]=="")
  35. {
  36. $count += 1;
  37. }
  38. fseek($fp,0);
  39. fputs($fp, $count);
  40. flock($fp, 3);
  41. fclose($fp);
  42.  
  43. } else {
  44. // En: Display a error message if file does not exist.
  45.  
  46. echo "Can't find file, check '\$file' var...<BR>";
  47. }
  48.  
  49.  
  50.  
  51. chop($count);
  52. $nb_digits = max(strlen($count), $NB_DIGITS);
  53. $count = substr("0000000000".$count, -$nb_digits);
  54.  
  55. $digits = preg_split("//", $count);
  56.  
  57. for($i = 0; $i <= $nb_digits; $i++) {
  58. if ($digits[$i] != "") {
  59. $html_result .= "<IMG SRC=\"$IMG_DIR_URL$digits[$i].gif\">";
  60. }
  61. }
  62.  
  63. echo $html_result;
  64.  
  65. ?>



please help!
Offline svm - 30/03/2007 12:13 (laatste wijziging 30/03/2007 12:18)
Avatar van svm PHP ver gevorderde Oke, hier een scriptje dat het dmv het IP telt.
Het bestandje wordt automatisch aangemaakt indien deze niet bestaat

  1. <?
  2. // UNIEKE BEZOEKERS TELLER \\
  3.  
  4. $log = "count_data.txt"; // de naam van het bestandje waar de hits inkomen
  5. $chmod = "0666"; // de CHMOD die het bestandje moet krijgen als deze aangemaakt moet worden
  6.  
  7. if(!is_file($log)){
  8. $fp = fopen($log, 'w'); // als het niet bestaat aanmaken
  9. fwrite($log, $_SERVER['REMOTE_ADDR'].";"); // het IP van de bezoeker erin zetten gevolgd door een ;
  10. fclose($fp); // en natuurlijk sluiten
  11. chmod($log, $chmod);
  12. }
  13.  
  14. $hits = file_get_contents($log); // de inhoud van het bestandje opslaan in $hits
  15.  
  16. if(!strpos($hits, $_SERVER['REMOTE_ADDR'])){ // als het IP v/d bezoeker er niet instaat dan...
  17. $fp = fopen($log, 'a'); // openen met de pointer achteraan
  18. fwrite($log, $_SERVER['REMOTE_ADDR'].";"); // het IP van de bezoeker erin zetten gevolgd door een ;
  19. fclose($fp); // en natuurlijk sluiten
  20. }
  21.  
  22. $hits = file_get_contents($log); // de inhoud van het bestandje opslaan in $hits (na de update)
  23. $hits = substr_count($hits, ";"); // kijken hoevaak in het bestandje ; voorkomt (zoveel IP's zitten er dus in)
  24.  
  25. echo "Aantal unieke bezoekers: ". $hits;
  26. ?>



Edit:
De afbeeldingen mag je er zelf in verwerken.
Offline beatnu - 01/04/2007 17:16
Avatar van beatnu Nieuw lid thx 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.353s