Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ochrona przed botami- weryfikacja liczbowa
Forum PHP.pl > Forum > Bazy danych > MySQL
kuba_pilach
Witam, mój problem polega na tym, że w kodzie funkcji wyświetlania formularza rejestracji mam takie cuś:
  1. function wyswietl_form_rej() {
  2. ?>
  3. <form method="post" action="nowa_rejestracja.php">
  4. <table bgcolor="#cccccc">
  5. <tr>
  6. <td>Adres poczty elektronicznej:</td>
  7. <td><input type="text" name="email" size="30" maxlength="100"></td></tr>
  8. <tr>
  9. <td>Preferowana nazwa użytkownika <br />(maksymalnie 16 znaków):</td>
  10. <td valign="top"><input type="text" name="nazwa_uz"
  11. size="16" maxlength="16"/></td></tr>
  12. <tr>
  13. <td>Hasło <br />(pomiędzy 6 i 16 znaków):</td>
  14. <td valign="top"><input type="password" name="haslo"
  15. size="16" maxlength="16"/></td></tr>
  16. <tr>
  17. <td>Potwierdź hasło:</td>
  18. <td><input type="password" name="haslo2" size="16" maxlength="16"/></td></tr>
  19. <tr>
  20. <td>Weryfikacja!</td>
  21. </tr>
  22. <tr>
  23. <?php
  24. $lewa = rand(1, 10);
  25. $prawa = rand(1, 10);
  26. echo "<td>".$lewa."+".$prawa."=</td>";
  27. ?>
  28. </tr>
  29. <tr>
  30. <td><input type="text" name="weryfikacja" size="2" maxlength="2"/></td>
  31. </tr>
  32. <tr>
  33. <td colspan="2" align="center">
  34. <input type="submit" value="Rejestracja"></td></tr>
  35. </table></form>
  36. <?php
  37.  
  38. }


Podam jeszcze pliki które mogą się przydać:
formularz_rejestracji.php:
  1. <?php
  2. require_once('funkcje_zakladki.php');
  3. tworz_naglowek_html('Rejestracja użytkownika');
  4.  
  5. wyswietl_form_rej();
  6.  
  7. tworz_stopke_html();
  8. ?>
  9.  

A i na końcu plik z którym mam "lekki" problem:
nowa_rejestracja.php:
  1. <?php
  2.  
  3. // utworzenie krótkich nazw zmiennych
  4. $email=$_POST['email'];
  5. $nazwa_uz=$_POST['nazwa_uz'];
  6. $haslo=$_POST['haslo'];
  7. $haslo2=$_POST['haslo2'];
  8.  
  9. // rozpoczęcie sesji, która może okazać się konieczna później
  10. // rozpoczęcie w tym miejscu, musi ona zostać przekazana przed nagłówkami
  11.  
  12. // dołączenie plików funkcji tej aplikacji
  13. require_once('funkcje_zakladki.php');
  14.  
  15. try {
  16. // sprawdzenia wypełnienia formularzy
  17. if (!wypelniony($_POST)) {
  18. throw new Exception('Formularz wypełniony nieprawidłowo — proszę wrócić i spróbować ponownie.');
  19. }
  20.  
  21. // nieprawidłowy adres poczty elektronicznej
  22. if (!prawidlowy_email($email)) {
  23. throw new Exception('Nieprawidłowy adres poczty elektronicznej — proszę wrócić i spróbować ponownie.');
  24. }
  25.  
  26. // różne hasła
  27. if ($haslo != $haslo2) {
  28. throw new Exception('Niepasujące do siebie hasła — proszę wrócić i spróbować ponownie.');
  29. }
  30.  
  31. // sprawdzenie długości nazwy użytkownika
  32. if (strlen($nazwa_uz) > 16) {
  33. throw new Exception('Nazwa uzytkownika nie może mieć więcej niż 16 znaków — proszę wrócić i spróbować ponownie.');
  34. }
  35.  
  36. // sprawdzenie długości hasła
  37. // nazwę użytkownika można skrócić, lecz zbyt długiego
  38. // hasła skrócić nie można
  39. if ((strlen($haslo) < 6) || (strlen($haslo) > 16)) {
  40. throw new Exception('Hasło musi mieć co najmniej 6 i maksymalnie 16 znaków — proszę wrócić i spróbować ponownie.');
  41. }
  42.  
  43. // próba zarejestrowania
  44. rejestruj($nazwa_uz, $email, $haslo);
  45. // rejestracja zmiennej sesji
  46. $_SESSION['prawid_uzyt'] = $nazwa_uz;
  47.  
  48.  
  49. // stworzenie łącza do strony członkowskiej
  50. tworz_naglowek_html('Rejestracja pomyślna');
  51. echo 'Rejestracja zakończyła się sukcesem. Proszę udać się na stronę '
  52. .'członkowską aby skonfigurować swoje zakładki!';
  53. tworz_HTML_URL('czlonek.php', 'Strona członkowska');
  54.  
  55. // koniec strony
  56. tworz_stopke_html();
  57. }
  58. catch (Exception $e) {
  59. tworz_naglowek_html('Problem:');
  60. echo $e->getMessage();
  61. tworz_stopke_html();
  62. }
  63. ?>



A więc w tym ostatnio podanym kodzie, chcę by sprawdzał poprawność wyniku dwóch losowanych liczb ($lewa i $prawa) i by wyskoczył błąd, jeśli się nie zgadzają...
Bardzo proszę o pomoc i dzięki z góry smile.gif
GwynBleidD
ja bym to zrobił tak: przed wysłaniem formularza rejestracji rozpocznij sesję, zapisz do $_SESSION['lewa'] i $_SESSION['prawa'] liczby do dodania, a następnie przy sprawdzaniu formularza odczytaj je i sprawdź czy są prawidłowo dodane.

Ja bym jednak nie polegał na dodawaniu liczb, lepiej znajdź w internecie gotowy algorytm do CAPTHA i go zastosuj smile.gif
kuba_pilach
Dzięki, już używam smile.gif
Ale zrobiłem CAPTCHA dopiero po napisaniu tematu...
Daję, że pomogłeś smile.gif
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.