Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Generowanie i sprawdzanie kodu
Forum PHP.pl > Forum > PHP
Micki_
Witam,

Napisałem dziś skrypt na porównywanie tekstu wpisanego w formularz z generowanym. Ale jest jeden problem. Kod generuje, ale gdy wpiszę poprawny kod w fomularz pokazuje że jest błędny. o to skrypt:


  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2. <?php
  3.  
  4. $ile_liter = 5;
  5.  
  6. $litery= "abcdefghijklmnopqrstuvwxyz0123456789";
  7.  
  8.  
  9. $haslo = "";
  10.  
  11. for ($i=0;$i<$ile_liter;$i++)
  12.  
  13. {
  14.  
  15. $haslo .= substr($litery,(rand()%(strlen($litery))),1);
  16.  
  17. };
  18.  
  19. echo ("Kod: $haslo");
  20.  
  21. ?>
  22.  
  23. <form action="" method="post">
  24. <input type="text" name="pas" />
  25. <input type="submit" value="OK" name="ok" />
  26. </form>
  27.  
  28. <?php
  29.  
  30. if (isset ($_POST['ok'])) {
  31. if ($_POST['pas'] == '$haslo') {
  32. echo ("Kod poprawny!");
  33. } else {
  34. echo ("Błędny kod!");
  35. }
  36. }
  37.  
  38. ?>




Pozdrawiam,
Micki!
pablo89pl
albo zapisz zmienna $haslo w sesji albo w polu input typu hidden, tyle ze to drugie to zadne zabezpieczenie...
nie wiem niech wypowiedza sie specjalisci

Później porownuj z np $_SESSION['zapaimetane_haslo'] albo z tego pola hidden... a nie '$haslo'... bo porownujesz w ten sposob z ciagiem '$haslo' a nie wartoscia ze zmeinnej $haslo
krowal
Przecież '$haslo' za każdym przeładowaniem strony ma inną wartość, to skąd wiesz co masz wpisać w formularzy skoro po jego wysłaniu, ale jesczze przed sprawdzaniem wartości pochodzącej z formularza zmieniasz $haslo na nowy ciąg znaków...
Zyx
Masz podaną odpowiedź dwa posty wyżej przecież - użyj chociażby sesji. Sesje objaśnia chyba każdy możliwy kurs i podręcznik PHP.

Przy okazji - wytłumacz mi sensowność tego porównania:

  1. $_POST['pas'] == '$haslo'


Następnie poczytaj, jak się zachowują apostrofy smile.gif. Zasada jest taka, że wartości zmiennych łączysz z ciągiem tekstowym wtedy i tylko wtedy, gdy chcesz do nich dokleić jakąś wartość tekstową i tak je dalej przetwarzać. W dodatku samo klejenie szybciej i bezpieczniej jest wykonywać z użyciem operatora konkatenacji (kropka). Przykład dobrego osadzania:

  1. echo $zmienna.' doklejony tekst';
  2. echo "$zmienna doklejony tekst"; // od biedy też może być, aczkolwiek nie polecam
  3. funkcja($zmienna);


Przykłady złego osadzania:

  1. echo '$zmienna'; // błędne użycie składni - nie zadziała
  2. echo "$zmienna"; // idiotyzm^2
  3. funkcja('$zmienna'); // błędne użycie składni
  4. funkcja("$zmienna"); // idiotyzm^2 - spróbuj tak tablicę albo zasób przekazać, a zobaczysz, co się wtedy stanie


Dużo się o tym rozpisałem, ale z takimi patologicznymi zapisami trzeba walczyć, zanim wyrządzisz sobie albo komuś nimi krzywdę.
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.