Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] dziwny problem ze zmienną
Forum PHP.pl > Forum > Przedszkole
Adam_
Witam,

Mam dziwny problem ze zmienną pobieraną przez POST z formularza. Chodzi o to, że jeśli nazwę zmienną inaczej niż pole w formularzu, to nic ona nie przechowuje, natomiast kiedy nazwa będzie taka sama - dane się pojawią. Nie wiem dlaczego tak się dzieję i bardzo proszę o pomoc co tutaj jest nie tak.

  1. <?php session_start(); ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  6. <link rel="stylesheet" href="../css/style.css" type="text/css" />
  7. <title>test</title>
  8. </head>
  9. <body>
  10. <div id="bar"></div>
  11. <?php
  12.  
  13. if (!isset($_SESSION['admin_zalogowany'])) {
  14. if(!isset($login) && !isset($haslo)) {
  15. echo "<form method=\"post\">
  16. <label for=\"login\">Login</label>
  17. <input type=\"text\" name=\"login\" />
  18. <label for=\"password\">Hasło</label>
  19. <input type=\"password\" name=\"password\" />
  20. <button type\"submit\" name=\"submit\" class=\"submit\">zaloguj się</button></form>";
  21. $login = trim($_POST['login']);
  22. $haslo = trim($_POST['password']);
  23. } else {
  24. echo "hasło: $haslo";
  25. echo "<br />login: $login";
  26. }
  27. }
  28.  
  29. ?>
  30. </body>
  31. </html>


i za każdym razem po wykonaniu skryptu, pojawia się tylko login, natomiast hasło pozostaje puste (ale powinno coś tam być, bo inaczej nic by się nie wyświetliło, bo jest ten warunek if !isset($haslo)

a jak zmienię nazwę inputa z hasłem na "haslo", to wszystko ładnie działa - nie wiem dlaczego tak się dzieje (tak jakby wszystko musiało się tak samo nazywać - zmienna i pole input
nospor
nie:
if(!isset($login) && !isset($haslo)) {
a:
if(!isset($login) || !isset($haslo)) {

Troche logiki sie klania
Adam_
ok zmieniłem - teraz wyświetla się tylko formularz, bo zmienna jest pusta - dopiero jak zmienie nazwe inputa na taką samą jaką ma ta zmienna, to działa - wiecie może dlaczego?
Piotrek05
Bo tak jest. Zmienna $_POST['zmienna'] przechowuje wartość pola o nazwie zmienna.
Adam_
Chodzi mi o to, czy mogę np. tak nazwać zmienną:

  1.  
  2. $dwa = $_POST['jeden']


czyli te $dwa ma inną nazwę od nazwy pola w formularzu (tutaj jeden), ale przechowuje to samo - właśnie to w moim kodzie coś nie działa

bo np tutaj jest ok:

  1. echo "<form method=\"post\">
  2. <input type=\"text\" name=\"login\" />
  3. <input type=\"submit\" />
  4.  
  5. </form>";
  6.  
  7. $loginek = htmlspecialchars(trim($_POST['login']));
  8.  
  9. echo $loginek;


coś jest zrobione źle w tym kodzie z pierwszego postu, ale nie wiem co :/
Ulysess
czekasz na gotowe..
  1. <?php session_start(); ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  6. <link rel="stylesheet" href="../css/style.css" type="text/css" />
  7. <title>test</title>
  8. </head>
  9. <body>
  10. <div id="bar"></div>
  11. <?php
  12.  
  13. if(!isset($_SESSION['admin_zalogowany'])) {
  14. if(!isset($_POST['l'])) {
  15. echo '<form action="" method="post">
  16. <label for="login">Login</label>
  17. <input type="text" name="login" />
  18. <label for="password">Hasło</label>
  19. <input type="password" name="password" />
  20. <input type="hidden" name="l" value="1" />
  21. <button type"submit" name="submit" class="submit">zaloguj się</button></form>';
  22. }
  23. else {
  24. $login = trim($_POST['login']);
  25. $haslo = trim($_POST['password']);
  26. echo 'Hasło: '.$haslo.' <br/>';
  27. echo "<br />login: $login";
  28. }
  29. }
  30. ?>
  31. </body>
  32. </html>


ogólnie to było bez sensu napisane..
po co sprawdzasz czy login , haslo sa puste - jeśli tak wyświetlasz form jeśli nie wyświetlasz dane skoro wiadomo że są puste.. skoro wysyłasz formularz sprawdzaj czy POST jest pusty.. do "Twojego" skryptu dodałem pole ukryte o nazwie l - to te pole sprawdzam czy jest puste czy też nie i na jego podstawie wyświetlam dane.
2 jeżeli używasz w zawartości echo tagów html lepiej używać '' zamiast "" ponieważ jeśli uzywasz "" w zawartości echa musisz dawać backslasha żeby traktował jako zwykły znak.
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.