Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dlaczego tak nie może być ? :)
Forum PHP.pl > Forum > Przedszkole
ReporteR
Jestem całkowicie nowy i zielony jeśli chodzi o PHP, ostatnio poczytałem trochę na temat tego języka, więc chciałem założyć ten temat tylko dla siebie, aby tutaj zadawać pytania ( po co robić burdel w tematach ). Na początku dość głupia sprawa, nawet dla początkujących programistów, no ale skąd mam wiedzieć coś, czego ktoś mi nie wytłumaczy, prawda ?

Napisałem banalne kilka linijek kodu:

  1. <?php
  2. // Dodamy zmienną $pass
  3. $pass = $_POST['haslo'];
  4. ?>
  5. <!- Mały forumularz w HTML ;) -->
  6. <html>
  7. <body><br /><br /><br /><center>
  8. <form action="index.php">
  9. <b>Password: </b><input type="text" name="haslo">
  10. </form>
  11. </body>
  12. </html>
  13. <?php
  14. // I sprawdzenie funkcji :)
  15. if ($pass==test123)
  16. echo "Autoryazacja sie udala :)";
  17. else
  18. echo "Nieprawidlowe haslo !";
  19. ?>


Rozumiem to tak:
1. Zmienna $pass przyjmuje wartość zapostowaną przez użytkownika,
2. Użytkownik podaje swoje hasło ( w tym wypadku jedno - test123 ),
3. Jeśli $pass jest równe "test123" zostaje wyświetlony napis, że autoryzacja się powiodła,
4. Jeśli $pass jest inne niż "test123" zostaje wyświetlony napis, że autoryzacja się nie powiodła.

Oczywiście ten skrypt nie działa, i mam pytanie - czy do tego jest potrzebna baza MySQL ? Nie wierzę, że dane nie mogą być przechowane w tym samym pliku. Muszę wyprowadzać zmienną $_SESSION dla tak banalnego skryptu ? Nie wydaje mi się. Co tutaj trzeba dodać jak najmniejszym kosztem ilości znaczków ( czyli jak najkrótszego skryptu ) aby działał on poprawnie ?

Dzięki za zrozumienie koledzy, regards smile.gif
melkorm
  1. if ($pass==test123)


Cytat
3. Jeśli $pass jest równe "test123" zostaje wyświetlony napis, że autoryzacja się powiodła,


Sam sobie odpowiedziałeś na pytanie "co tu nie działa".

Hint: Poczytaj o string'ach w PHP.
Ailvenge
Heh, ani baza danych, ani sesja, ani ciastka ani nic z tych rzeczy smile.gif
Po prostu "stringi" tongue.gif
markonix
Znacznik FORM a inaczej formularz domyślnie jako metodę przesyłania danych uznaje metodę GET czyli poprzez doklejanie informacji do URL'a.
Dodaj do form ->
method="POST"
lub $_POST zmień na $_GET (co w przypadku hasła jest totalnie złym pomysłem z oczywistych powodów).

W Twoim przypadku $pass jest puste.
Przy porównywaniu ($pass==test123) dla tekstów używaj cudzysłowy "string".
Poza tym od " == " są bardziej dopasowane funkcje do porównywania stringów (ciągów tekstowych).
Znaki równości to raczej do prostych rzeczy jak porównywanie liczb.
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.