Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] dziwny problem ze zmienną
Adam_
post 16.10.2010, 08:30:48
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 2
Dołączył: 4.12.2009

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


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

Ten post edytował Adam_ 16.10.2010, 08:32:29
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
nospor
post 16.10.2010, 08:36:11
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nie:
if(!isset($login) && !isset($haslo)) {
a:
if(!isset($login) || !isset($haslo)) {

Troche logiki sie klania


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Adam_
post 16.10.2010, 08:47:08
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 2
Dołączył: 4.12.2009

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


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?
Go to the top of the page
+Quote Post
Piotrek05
post 16.10.2010, 08:57:41
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 2
Dołączył: 25.04.2010

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


Bo tak jest. Zmienna $_POST['zmienna'] przechowuje wartość pola o nazwie zmienna.
Go to the top of the page
+Quote Post
Adam_
post 16.10.2010, 09:03:37
Post #5





Grupa: Zarejestrowani
Postów: 47
Pomógł: 2
Dołączył: 4.12.2009

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


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 :/

Ten post edytował Adam_ 16.10.2010, 09:05:44
Go to the top of the page
+Quote Post
Ulysess
post 16.10.2010, 11:00:50
Post #6





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


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.
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: 14.08.2025 - 07:32