Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z formularzem
Forum PHP.pl > Forum > Przedszkole
lewozmywak
  1.  
  2. $imie = 'ddd';
  3.  
  4. if($_SERVER['REQUEST_METHOD']!='POST') {
  5. echo "<form action=\"nauka.php\" method=\"POST\" />";
  6. echo "Imie: <input name=\"imie\" type=\"text\"/>";
  7. echo "Nazwisko: <input name=\"nazwisko\" type=\"text\" />";
  8. echo "<input type=\"reset\"/>";
  9. echo "<input type=\"submit\" value=\"Wyslij\" />";
  10. echo "</form>"; }
  11. else {
  12. echo $_POST["imie"];
  13. echo " ";
  14. echo $_POST["nazwisko"]; }
  15.  
  16. $imie = $_POST["imie"];
  17.  
  18. if($imie == 'karol')
  19. {
  20.  
  21. echo "tu są tajne dane";
  22.  
  23. }
  24.  
  25. else
  26. {
  27. echo "nie jestes karol nie masz tajnych danych";
  28. }
  29.  



Kod z zajęć który usilnie próbuje przerobić bez większych efektów... formularz jest dopóki nie naciśnie się buttona wyślij. Tylko że chciałbym to tak przerobić, żeby formularz dopiero znikł jeśli podane imie będzie karol. Próbowałem już pętli while, tylko że w nieskończoność wypisuje ten formularz i zawiesza się przeglądarka. Teraz niestety znika mi formularz ale przepuszcza do tajnych danych jeśli imieniem jest karol tylko że wypisuje na poczatku (Notice: Undefined index: imie in C:\xampp\htdocs\nkolos\nauka.php on line 30 nie jestes karol nie masz tajnych danych) ; . Może mie ktoś natchnąć, albo pomóc, żeby to tak zrobić, żeby formularz ciągle istniał, a znikł dopiero po podaniu imienia karol; i wtedy przepuszczał do tajnych danych...
Comandeer
Proponuję jeden blok if/else, który sprawdza czy formularz przesłano i imię jest równe Karol i wyświetla tajne dane albo wyświetla formularz
sadistic_son
  1.  
  2.  
  3. if(!isset($_POST['imie']) || empty($_POST['imie']) || !isset($_POST['nazwisko']) || empty($_POST['nazwisko'])) {
  4. echo "<form action=\"nauka.php\" method=\"POST\" />";
  5. echo "Imie: <input name=\"imie\" type=\"text\"/>";
  6. echo "Nazwisko: <input name=\"nazwisko\" type=\"text\" />";
  7. echo "<input type=\"reset\"/>";
  8. echo "<input type=\"submit\" value=\"Wyslij\" />";
  9. echo "</form>"; }
  10. else {
  11. echo $_POST["imie"];
  12. echo " ";
  13. echo $_POST["nazwisko"]; }
  14.  
  15. $imie = $_POST["imie"];
  16.  
  17. if($imie == 'karol')
  18. {
  19.  
  20. echo "tu są tajne dane";
  21.  
  22. }
  23.  
  24. else
  25. {
  26. echo "nie jestes karol nie masz tajnych danych";
  27. }
Teraz formularz znika dopiero po wpisaniu i imienia i nazwiska ale jakiegokolwiek. Natomiast jesli wpiszesz imie karol i jakies nazwisko to wyswietli tajne dane. Tak mialo byc? Czy ma nikac TYLKO po wpisaniu karol?
nospor
@sadistic tak na przyszlosc:

!isset($_POST['imie']) || empty($_POST['imie'])
jest rownowazne z tym:
empty($_POST['imie'])

No i twoj kod w zaden sposob nie rozwiązuje problemu autora. Czytanie ze zrozumieniem sie klania wink.gif
Comandeer
A czy przypadkiem ten warunek nie sprawdza w gruncie rzeczy tego samego, jak ten co już jest - czyli wysłania formularza?
sadistic_son
Cytat(nospor @ 19.05.2015, 15:08:24 ) *
@sadistic tak na przyszlosc:

!isset($_POST['imie']) || empty($_POST['imie'])
jest rownowazne z tym:
empty($_POST['imie'])
Dobra, zapędziłem się w ilości sprawdzeń tongue.gif Początkowo chciałem dać !isset($_POST['imie']) || $_POST['imie']=='' ale zmieniłem zdanie w trakcie, nie poprawiając reszty. Zresztą co się będę tłumaczyć - działa? Działa!

Cytat(nospor @ 19.05.2015, 15:08:24 ) *
No i twoj kod w zaden sposob nie rozwiązuje problemu autora. Czytanie ze zrozumieniem sie klania wink.gif
No jak nie? Jak wpiszesz imie inne niz karol to nie pokaze tajnych danych.


Cytat(Comandeer @ 19.05.2015, 15:10:00 ) *
A czy przypadkiem ten warunek nie sprawdza w gruncie rzeczy tego samego, jak ten co już jest - czyli wysłania formularza?

No nie zupełnie, bo pierwotnie wystarczyło kliknąć w submit aby warunek był spełniony a $_POST['imie'] i $_POST['nazwisko'] są puste (lub w ogóle nie istnieją).
nospor
@sadistic son - przeczytaj jeszcze raz problem wink.gif
sadistic_son
No dobra... @lewozmywak którego z poniższych rezultatów oczekujesz?
1) Wpisujesz dowolne imie - formularz znika, pojawia sie ze nie jestes karol. Wpisujesz karol - formularz znika, pojawiaja sie tajne dane.
2) Wpisujesz dowolne imie - formularz zostaje, pojawia sie ze nie jestes karol. Wpisujesz karol - formularz znika, pojawiaja sie tajne dane.
lewozmywak
wersja 2
KsaR
Cytat(lewozmywak @ 19.05.2015, 17:28:32 ) *
wersja 2


  1. if (!isset($_POST,$_POST['imie']))
  2. { # nie wyslano imienia
  3. echo "<form action=\"nauka.php\" method=\"POST\" />";
  4. echo "Imie: <input name=\"imie\" type=\"text\"/>";
  5. echo "Nazwisko: <input name=\"nazwisko\" type=\"text\" />";
  6. echo "<input type=\"reset\"/>";
  7. echo "<input type=\"submit\" value=\"Wyslij\" />";
  8. echo "</form>";
  9. }
  10. else # wysłano
  11. {
  12. if (mb_strtolower($_POST['imie'],'UTF-8')!=='karol') #edit: dodałem kodowanie.
  13. {
  14. #złe imie
  15. }
  16. else
  17. {
  18. #dobre.. Pokazanie tajnych danych
  19. }
  20. }
lewozmywak
nie ma warningów, ale nadal nie działa tak jak miało tongue.gif... formularz ma ciągle być widoczny dopóki nie zostanie podane imie karol. Tutaj formularz znika po wpisaniu byle czego i zatwierdzeniu :/ ...
Comandeer
  1. if(!isset($_POST['imie']) || $_POST['imie'] != 'Karol')
  2. formularz();
  3. else
  4. tsjneDane();
KsaR
Cytat(lewozmywak @ 19.05.2015, 18:07:24 ) *
nie ma warningów, ale nadal nie działa tak jak miało tongue.gif... formularz ma ciągle być widoczny dopóki nie zostanie podane imie karol. Tutaj formularz znika po wpisaniu byle czego i zatwierdzeniu :/ ...


Wystarczyło dodać w "Złe imie" ponownie formularz... Myślałem że to logiczne bo były komentarze tongue.gif
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.