Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] niestabilny klikomierz
Forum PHP.pl > Forum > Przedszkole
mediamount
mam taki oto licznik kliknięć w link w PHP

plik click.php
  1. <?
  2. # Licznik kliknięć na link v-0.01
  3. # Autor: Adam "Logicman" Sobociński
  4.  
  5. # download
  6.  
  7.  
  8. $x = $_GET['x'];
  9.  
  10. $lines=file("click.dat");
  11. $stan=0;
  12. for($n=0; $n<count($lines); $n++)
  13. {
  14. $str=explode(",",$lines[$n]);
  15. if(chop($str[1])=="$x")
  16. {
  17. settype($str[0],"integer");
  18. $str[0]++;
  19. $lines[$n]=implode(",",$str);
  20. $stan=1;
  21. }
  22. }
  23. $plik=fopen("click.dat","w");
  24. flock($plik,2);
  25. if($stan==0) fputs($plik,"1,$x\n");
  26. for($n=0; $n<count($lines); $n++) fputs($plik,chop($lines[$n])."\n");
  27. flock($plik,3);
  28. fclose($plik);
  29. header("Location: $x");
  30. ?>


przykładowy link wygląda tak:

www.strona.pl/click.php?x=http://adres-docelowy.pl
www.strona.pl/click.php?x=adres-lokalny.html
www.strona.pl/click.php?x=http://inny-adres.pl/podstrona.php

efekt w pliku click.dat jest taki:

Cytat
3,http://adres-docelowy.pl
4,adres-lokalny.html
8,http://inny-adres.pl/podstrona.php


licznik wciąż mi się zacina i nie chce zliczać linków ze znakiem "," (przecinek) w adresie (np artykuły gazety wyborczej online mają przecinki)

proszę o pomoc aby uczynić ten skrypt bardziej niezawodnym i stabilnym dla dużej ilości kliknięć

(np także to, aby w wynikach *.dat sortował adresy wg liczby kliknięć - najwyższe od góry)
Dritter
oO

$str=explode(",",$lines[$n]);


I Ty się dziwisz, że Ci przecinków nie akceptuje? Spróbuj rozdzielać czymś, czego nie można zastosować w adresach stron.
messmaker
  1. $str=explode(",",$lines[$n], 2);
mediamount
jaki to może być znak, który nie występuje w adresach url?

messmaker - co ulepsza ten fragment kodu, po kiedy zastąpiłem nim stary fragment w skrypcie, on przestał działać?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.