Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][PHP]Walidacja użytkowników - uproszczona Captcha, Zabezpieczenie przed obchodzeniem blokady nałożonej przez cookies.
Galakar
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 29.05.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam wszystkich.

Dzięki wcześniejszym poradom i pomocy użytkowników tego zacnego forum, udało mi się uruchomić stronę internetową, która działa tak jak pragnąłem (mniej więcej). Przez kilka miesięcy wszystko było w porządku, aż w zeszłym tygodniu użyto skryptu który pozwolił na automatyczne oddawanie głosów w ankiecie. Cała ankieta składała się tylko z pól "radio" (nie wiem czy jest to istotne). Od tygodnia staram się temu zaradzić i niestety powoli opuszcza mnie nadzieja, że sam cokolwiek wykombinuję.

Do tej pory zabezpieczałem się przed wielokrotnym głosowaniem poprzez ciasteczka. Przez ostatni tydzień próbowałem innych metod, ale były one określane jako "niewystarczające". Pomysły wyglądały następująco:
- wraz z oddaniem głosu uruchamiała się sesja. Jeśli sesja lub ciasteczka są aktywne pojawiał się komunikat, że dany użytkownik już głosował;
- przycisk submit pojawiał się dopiero po naciśnięciu buttona "Jestem człowiekiem";
- dodanie okienka alert.

Jako że powyższe zabezpieczenia były określane jako słabe, postanowiłem napisać kod, który najpierw generuje losowe słowo które użytkownik musi przepisać. Jeśli to się powiedzie, pojawi się przycisk "Głosuj" i będzie można normalnie oddać głos. Na stronie http://www.w3schools.com/ jest pokazany tutorial jak napisać prostą walidację w JS. Niestety na JS się nie znam. Spróbowałem napisać to w PHP ale utknąłem tuż po funkcji która miałaby generować takie zapytanie. Wygląda ona tak:

  1. <?php
  2. function pobierz_slowo($min, $max)
  3. //pobranie losowego słowa ze słownika
  4. {
  5. // generowanie losowego słowa
  6. $slowo = '';
  7. // ścieżka do słowa
  8. $slownik = '../slowa/pl.txt'; // słownik
  9. $wp = @fopen($slownik, 'r'); //otwarcie pliku tylko do odczytu
  10. if(!$wp) //co jeśli nie udało się otworzyć pliku
  11. return false;
  12. $wielkosc = filesize($slownik);
  13.  
  14. // przejście do losowej pozycji w słowniku
  15. srand ((double) microtime() * 1000000);
  16. $losowa_pozycja = rand(0, $wielkosc);
  17. fseek($wp, $losowa_pozycja);
  18.  
  19. // pobranie ze słownika następnego pełnego słowa o właściwej długości
  20. while (strlen($slowo)< $min || strlen($slowo)>$max || strstr($slowo, "'"))
  21. {
  22. if (feof($wp))
  23. fseek($wp, 0); // jeżeli koniec pliku, przeskocz na początek
  24. $slowo = fgets($wp, 80); // przeskoczenie pierwszego słowa bo może być niepełne
  25. $slowo = fgets($wp, 80); // potencjalne hasło
  26. };
  27. $slowo=trim($slowo); // obcięcie początkowego \n z funkcji fgets
  28. return $slowo;
  29. }
  30. ?>


Zapoznałem się już z tematem http://forum.php.pl/index.php?showtopic=30...t=0&start=0 Niestety niewiele mi on mówi. Ma ktoś może jakąś radę, jak rozwiązać ten problem?

Z wyrazami szacunku

Galakar
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 12:03