Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Niezdefiniowane indeksy w formularzu
mlodygda
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 22.08.2012

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


Witam, to mój pierwszy post na forum. Po zapoznaniu się z FAQ i przeszukaniu tematów stwierdziłem, że zadam pytanie bo nigdzie takiego nie znalazłem. Chodzi mianowicie o lepki formularz na stronie. Kod php wygląda następująco:

  1. if (isset($_POST['wyslij'])) {
  2. $problem=FALSE;
  3.  
  4. if (empty($_POST['uzytkownik'])){
  5. $problem=TRUE;
  6. print '<p>Wpisz nazwe uzytkownika</p>';
  7. }
  8.  
  9. if (empty($_POST['imie'])){
  10. $problem=TRUE;
  11. print '<p>Wpisz swoje imie.</p>';
  12. }
  13.  
  14. if (empty($_POST['email'])){
  15. $problem=TRUE;
  16. print '<p>Wpisz swojego emaila!</p>';
  17. }
  18.  
  19. if (empty($_POST['haslo1'])){
  20. $problem=TRUE;
  21. print '<p>Proszę podać hasło!</p>';
  22. }
  23.  
  24. if ($_POST['haslo1']!=$_POST['haslo2']){
  25. $problem=TRUE;
  26. print '<p>Twoje hasła się nie zgadzają.</p>';
  27. }
  28.  
  29. if (!$problem){
  30.  
  31. print '<p>zarejestrowales sie!</p>';
  32. } else {
  33. print 'Sprobuj jeszcze raz!';
  34. }
  35. }


Przy tym wyrzuca mi taki błąd:

  1. Notice: Undefined index: uzytkownik in C:\xampp\htdocs\mojestrony\strona2\rejestracja.php on line 56
  2.  
  3. Notice: Undefined index: imie in C:\xampp\htdocs\mojestrony\strona2\rejestracja.php on line 57
  4.  
  5. Notice: Undefined index: email in C:\xampp\htdocs\mojestrony\strona2\rejestracja.php on line 58


Pytanie jest raczej natury czysto upiększającej, bo poradziłem sobie z tym problemem na dwa sposoby, jednak nie wiem do końca jakie niosą ze sobą skutki. Pytanie do was który lepszy. A więc:

1. Zadeklarować zmienne na początku kodu jako puste miejsca
Problem: jeśli będzie dużo zmiennych to dużo..syzyfowej pracy.

2. error_reporting (E_ALL & ~E_NOTICE);
Problem: nie wiem co moge przegapić, jeśli nie będzie pokazywało błędów typu NOTICE.
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




Kod co tu pokazałeś nie odpowiada za te błędy.

Zanim dobierzesz się do indeksu tablicy, najpierw należy sprawdzić, czy ten indeks istnieje. Do tego używa się isset() lub !empty()

Cytat
2. error_reporting (E_ALL & ~E_NOTICE);
Problem: nie wiem co moge przegapić, jeśli nie będzie pokazywało błędów typu NOTICE.
Najgorsze co możesz zrobić. Tu wyjaśniam dlaczego:
http://nospor.pl/notice-wyswietlac-czy-nie.html
Go to the top of the page
+Quote Post
mlodygda
post
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 22.08.2012

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


Cytat(nospor @ 22.08.2012, 12:30:35 ) *
Kod co tu pokazałeś nie odpowiada za te błędy.


aj, faktycznie. błedy wywala przy formularzu html.

Cytat(nospor @ 22.08.2012, 12:30:35 ) *
Zanim dobierzesz się do indeksu tablicy, najpierw należy sprawdzić, czy ten indeks istnieje. Do tego używa się isset() lub !empty()


rozumiem ze tu indeksami tablicy są moje zmienne (uzytkownik, imie i mail) ?

Cytat(nospor @ 22.08.2012, 12:30:35 ) *
Najgorsze co możesz zrobić. Tu wyjaśniam dlaczego:
http://nospor.pl/notice-wyswietlac-czy-nie.html


Dzięki. Czyli deklaracja ich na poczatku jako pustych miejsc jest...poprawnym rozwiązaniem?
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Cytat
Czyli deklaracja ich na poczatku jako pustych miejsc jest...poprawnym rozwiązaniem?
Nie/tak (zależy od użycia).... Przecież wyraźnie napisałem:
Cytat
Zanim dobierzesz się do indeksu tablicy, najpierw należy sprawdzić, czy ten indeks istnieje. Do tego używa się isset() lub !empty()

Ewentualnie możesz pisać tak:
$zmienna = isset($_POST['zmienna']) ? $_POST['zmienna'] : '';
Wszystko zależy od sytuacji

Cytat
rozumiem ze tu indeksami tablicy są moje zmienne (uzytkownik, imie i mail) ?
To nie są zmienne, a indeksy tablicy.
To jest zmienna: $zmienna
To jest indeks tablicy: $tablica['indeks']
Go to the top of the page
+Quote Post
mlodygda
post
Post #5





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 22.08.2012

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


Kurde kombinuje i nie wychodzi. Nie wiem w jakim miejscu wrzucic tego if(isset()){}.
Wrzucałem za pierwszym ifssetem:

  1. if (isset($_POST['wyslij'])) {
  2. $problem=FALSE;
  3. if (isset($_POST['uzytkownik']{
  4. ....


I dalej ten sam błąd.

Próbowałem w miejscu gdzie jest formularz ale tam to trochę po omacku robiłem i dopiero jakieś dziwne błędy pokazało. Jakaś podpowiedź?
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Ty pokaż lepiej zawartość pliku rejestracja.php (bez twoich obecnych zmian z tego tematu)
Go to the top of the page
+Quote Post
mlodygda
post
Post #7





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 22.08.2012

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


Prosze bardzo
(z jeszcze koślawym definiowaniem uzytkownika, imienia i maila na samym poczatku):

  1. <?php
  2.  
  3. ?>
  4.  
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
  6. <HTML>
  7. <HEAD>
  8. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  9.  
  10. <TITLE>Rejestracja</TITLE>
  11. </HEAD>
  12. <BODY>
  13. <?php
  14. $_POST['uzytkownik']=" ";
  15. $_POST['imie']=" ";
  16. $_POST['email']=" ";
  17.  
  18. require ('naglowek.php');
  19.  
  20. print '<div id="lewastrona">
  21. <h1>Rejestracja</h1>
  22. <p>Zarejestruj sie!</p>';
  23.  
  24. // <<<<----------- POCZĄTEK IF ---------->>> //
  25.  
  26. if (isset($_POST['wyslij'])) {
  27. $problem=FALSE;
  28.  
  29. if (empty($_POST['uzytkownik'])){
  30. $problem=TRUE;
  31. print '<p>Wpisz nazwe uzytkownika</p>';
  32. }
  33. if (empty($_POST['imie'])){
  34. $problem=TRUE;
  35. print '<p>Wpisz swoje imie.</p>';
  36. }
  37. if (empty($_POST['email'])){
  38. $problem=TRUE;
  39. print '<p>Wpisz swojego emaila!</p>';
  40. }
  41. if (empty($_POST['haslo1'])){
  42. $problem=TRUE;
  43. print '<p>Proszę podać hasło!</p>';
  44. }
  45. if ($_POST['haslo1']!=$_POST['haslo2']){
  46. $problem=TRUE;
  47. print '<p>Twoje hasła się nie zgadzają.</p>';
  48. }
  49. if (!$problem){
  50.  
  51. header('Location: witaj.php');
  52.  
  53.  
  54. } else {
  55. print 'Sprobuj jeszcze raz!';
  56. }
  57. }
  58.  
  59. // <<<-------- KONIEC IF ------------>>>> //
  60.  
  61. print '<form action="rejestracja.php" method="POST"><p>
  62. Nazwa uzytkownika:<input type="text" name="uzytkownik" size="20" value="'.$_POST['uzytkownik'] .'" /><br />
  63. Imie:<input type="text" name="imie" size="20" value="'.$_POST['imie'] .'" /><br />
  64. Email:<input type="text" name="email" size="20" value="'.$_POST['email'] .'" /><br />
  65. Haslo:<input type="password" name="haslo1" size="20" /><br />
  66. Powtorz haslo:<input type="password" name="haslo2" size="20" /><br />
  67. <input type="submit" name="wyslij" size="20" value="REJESTRUJ!" /></p>
  68. </form>';
  69. print '</div>';
  70.  
  71. require('stopka.php');
  72.  
  73. ?>
  74.  
  75.  
  76. </BODY>
  77. </HTML>
  78.  
  79. <?php
  80.  
  81. ?>


Ten post edytował mlodygda 22.08.2012, 12:53:35
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




Chodzi o ten kod:
Kod
Nazwa uzytkownika:<input type="text" name="uzytkownik" size="20" value="'.$_POST['uzytkownik'] .'" /><br />

Imie:<input type="text" name="imie" size="20" value="'.$_POST['imie'] .'" /><br />

Email:<input type="text" name="email" size="20" value="'.$_POST['email'] .'" /><br />

Pisałem ci jak masz to pisać:
Kod
Nazwa uzytkownika:<input type="text" name="uzytkownik" size="20" value="'.(isset($_POST['uzytkownik']) ? $_POST['uzytkownik'] : '') .'" />

Analogicznie pozostałe pola
Go to the top of the page
+Quote Post
mlodygda
post
Post #9





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 22.08.2012

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


aj wej, a ja kombinowalem z "if" po przeczytaniu twojego artykułu. Dzieki bardzo za cierpliwość. Mam jeszcze pytanie czy byś mógł jakoś wytłumaczyć ten fragment bo po prostu nie rozumiem tej konstrukcji..
Go to the top of the page
+Quote Post
nospor
post
Post #10





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




ternary operator
http://sg3.php.net/manual/pl/language.oper....comparison.php

Cytat
aj wej, a ja kombinowalem z "if" po przeczytaniu twojego artykułu.
Następnym razem patrz na numer linii błędu... po to one się wyświetlają...
Go to the top of the page
+Quote Post
ethann
post
Post #11





Grupa: Zarejestrowani
Postów: 56
Pomógł: 18
Dołączył: 7.04.2012

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


  1. $_POST['uzytkownik']=" ";
  2. $_POST['imie']=" ";
  3. $_POST['email']=" ";


Ten fragment umieszczony na początku to Zuo! Jeśli zatwierdzisz formularz, wtedy wysłane przez niego wartości od razu nadpiszesz na puste już na samym początku.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 17:32