Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Generowanie i sprawdzanie kodu
Micki_
post 9.09.2009, 14:07:57
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 2.08.2009

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


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!
Go to the top of the page
+Quote Post
pablo89pl
post 9.09.2009, 14:17:51
Post #2





Grupa: Zarejestrowani
Postów: 143
Pomógł: 19
Dołączył: 7.09.2009
Skąd: Rzeszów

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


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
Go to the top of the page
+Quote Post
krowal
post 9.09.2009, 14:23:32
Post #3





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


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...


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
Zyx
post 9.09.2009, 14:35:35
Post #4





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


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ę.

Ten post edytował Zyx 9.09.2009, 14:36:09


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.07.2025 - 12:26