Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Licznik
Forum PHP.pl > Forum > PHP
Lisek54
Tworzymy plik instaluj.php a tam kod:
  1. <? $co = fopen('licznik.txt', 'w');
  2. fputs($co, '1');
  3. fclose($co); ?>


Później plik index.php:
  1. <?
  2. if($cook!='1'){
  3. setcookie("cook","1");
  4. $pliczek=fopen("licznik.txt", 'r');
  5. $zmienna=fgets($pliczek);
  6. fclose($pliczek);
  7. $zmienna++;
  8. $plik = fopen('licznik.txt', 'w');
  9. fwrite($plik, $zmienna);
  10. fclose($plik);
  11. include("licznik.txt");
  12. }
  13. else
  14. {
  15. include("licznik.txt");
  16. }
  17. ?>


Najpierw odpalamy instaluj.php gdy strona się załaduje usuwamy go smile.gif

Na plik licznik.txt nadaj chmod 777.

P.S jeden z moich pierwszych liczników :-)
lukir
1)Podstawowy błąd jaki zrobiłeś to fragment:
  1. <?php
  2. if($cook!='1')
  3. setcookie("cook","1");
  4. ?>


Chodzi o zmienną $cook.
Mianowicie powinieneś odwołac się do wartości tej zmiennej w ten sposób:

  1. <?php
  2. if($_COOKIE['cook']!='1')
  3. setcookie("cook","1");
  4. ?>


Wtedy kod jest bezpieczniejszy.

2)I jeszcze setcookie():
  1. <?php
  2. if($_COOKIE['cook']!='1')
  3. setcookie("cook","1", time()+43200);
  4. /*żeby ciasteczko zniknęło po jakimś czasie...
  5. Dodatkowo funkcję setcookie() umieściłbym na końcu instrukcji if(), ponieważ
  6. dopiero wtedy wartoś zostanie zwiększona.*/
  7. ?>


3)Powinieneś kontrolowac typ zmiennej $zmienna:
  1. <?php
  2. $pliczek=fopen("licznik.txt", 'r');
  3. $zmienna=fgets($pliczek);
  4. fclose($pliczek);
  5. if(ereg("[0-9]", $zmienna)) {
  6. $zmienna++; //ma to sens tylko dla liczb
  7. } else {
  8. echo("Błąd danych");
  9. }
  10. ?>


4)Myślę, że nazewnictwo zmiennych nie jest satysfakcjonujące.
Może to i prosty skrypt, ale dobrym nawykiem jest logiczne i czytelne nadawanie nazw zmienym.

5)No i plik instaluj.php. Powinien wyglądac tak (żeby nie fałszowac wyniku tongue.gif):

  1. <?php
  2. $co = fopen('licznik.txt', 'w');
  3. fputs($co, '0'); //ustawiamy wartośc licznika na 0 ;]
  4. fclose($co);
  5. ?>
aleksander
złe forum

moim zdaniem topic nie nadaje się na forum algorytmy klasy funkcje ( poziom funkcjonalny skryptu) wiec wrzucam na php (poniewaz jest duzo bledow a tym sie zajmuje to forum)
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.