Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] system logowania - błąd w kodzie?
Forum PHP.pl > Forum > Przedszkole
jacke
od razu moze powiem ze skrypt do moich nie nalezy, znalazlem go gdzies w necie, wszystko fajnie ale taki problem mi wywala:


Notice: Undefined index: submit in C:\wamp\www\logowanie.php on line 13

Notice: Undefined index: user in C:\wamp\www\logowanie.php on line 14

Notice: Undefined index: pass in C:\wamp\www\logowanie.php on line 15


  1. <?php session_start();
  2. ?>
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  4. "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <title>Logowanie</title>
  8. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  9. </head>
  10.  
  11. <body bgcolor="#000000">
  12. <?php
  13. $submit=$_POST['submit'];
  14. $login=$_POST['user'];
  15. $pass=$_POST['pass'];
  16. $_SESSION['aUser']=$login;
  17. $form= "<form action=\"logowanie.php\" method=\"post\" name=\"log\">
  18. <table width=\"150\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#999999\">
  19. <tr>
  20. <td><font color=\"#FFFFFF\">Login</font><br><input type=\"text\" name=\"user\"></td>
  21. </tr>
  22. <tr>
  23. <td><font color=\"#FFFFFF\">Haslo</font><br><input type=\"password\" name=\"pass\"></td>
  24. </tr>
  25. <tr>
  26. <td> <br><input type=\"submit\" name=\"submit\" value=\"Zaloguj\"></td>
  27. </tr>
  28. <tr>
  29. <td><a href=\"rejestracja.php\" style=\"color:#FF0000; text-decoration:none; \">zarejestruj się </a></td>
  30. </tr>
  31. </table>
  32. </form>";
  33. if(empty($submit))
  34. {
  35. echo ($form);
  36. }else
  37. {
  38. if($con=mysql_connect('localhost','root',''))
  39. {
  40. mysql_select_db('rejestracja');
  41. $query=("SELECT `login` FROM `users` WHERE `login` = '".$login."' AND `haslo` = '".$pass."'");
  42. $do=mysql_query($query);
  43. $line=mysql_fetch_array($do);
  44. if($line!==false)
  45. {
  46. $user=$line['login'];
  47. print "<font color=\"#FFFFFF\">Witaj ".$_SESSION['aUser']." </font>";
  48. print "<br><a href=\"dalej.php\" style=\"color:#FF0000;\">Dalej</a>";
  49. print "<form action=\"out.php\" method=\"post\"> <input type=\"submit\" value=\"Wyloguj\"> </form>";
  50. }//linia
  51. else
  52. {
  53. echo("<font color=\"#FF0000\">Nieprawidłowa nazwa użytkownika lub hasło </font><br>".$form);
  54. }//else for linia
  55. mysql_close($con);
  56. }//polaczenie
  57. }//else
  58. ?>
  59. <br><font color="#FFFFFF">Treść Strony</font>
  60. </body>
  61. </html>



to samo sie dzieje przy rejestracji:

Notice: Undefined index: submit in C:\wamp\www\rejestracja.php on line 109

Notice: Undefined index: imie in C:\wamp\www\rejestracja.php on line 110

Notice: Undefined index: mail in C:\wamp\www\rejestracja.php on line 111

Notice: Undefined index: login in C:\wamp\www\rejestracja.php on line 112

Notice: Undefined index: haslo in C:\wamp\www\rejestracja.php on line 113

Notice: Undefined index: rhaslo in C:\wamp\www\rejestracja.php on line 114

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <title>Formularz rejestracyjny</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  6. </head>
  7.  
  8. <body bgcolor="#000000">
  9. <?php
  10. /*
  11. Skrypt został przetestowany na serwerze lokalnym.
  12. Skrypt został napisany przy założeniach:
  13. - istnieje baza danych mysql
  14. - jest ona na localhost z domyślnymi ustawieniami
  15. - w bazie istnieje tabela o nazwie 'users', która zawiera pola:
  16. `id` -integer, autoinkrementacja, jest unikalnym kluczem;
  17. `imie` -char, 25 znaków;
  18. `mail` -char, 50 znaków;
  19. `login` -char 25 znaków;
  20. `haslo` -char 25 znaków;
  21. `data` -datetime;
  22. - plik w którym się znajduje nazywa się 'rejestracja.php'
  23. - Skrypt ma za zadanie tylko rejstrację użytkownika i do jego późniejszego zalogowania
  24. trzeba dopisać skrypt w pliku 'logowanie.php' */
  25. /*
  26. Skrypt ten został napisany przez Jarosława Ziółkowskiego,
  27. jeśli chcesz go używać nie usuwaj tego komentarza.
  28. Można go modyfikować dostosowując do swoich potrzreb oraz rozpowszechniać nieodpłatnie.
  29. Nie wolno natomiast: Czerpać korzyści finansowych z jego sprzedaży, usuwać komentarza o autorze.
  30. Dziękuję i życzę miłego użytkowania.
  31. e-mail autora: web_designer@o2.pl
  32.  */
  33. function rysuj($imie_col, $mail_col, $login_col, $haslo_col, $rhaslo_col, $imie_val, $mail_val, $login_val, $komunikat) //funkcja rysująca formularz rejestracyjny
  34. {
  35. echo "<form action=\"rejestracja.php\" name=\"form\" method=\"post\">
  36. <table width=\"50%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
  37. <tr>
  38. <td>
  39. <font color=\"#FFFFFF\">
  40. <b>Wypełnij formularz rejestracyjny</b>
  41. </font>
  42. <br><br>
  43. <font color=\"#FF0000\">".$komunikat."</font>
  44. <br>
  45. <br>
  46. <font color='".$imie_col."'>
  47. Imię
  48. </font>
  49. <br>
  50. <input type=\"text\" name=\"imie\" value=".$imie_val.">
  51. </td>
  52. </tr>
  53. <tr>
  54. <td>
  55. <br>
  56. <font color=".$mail_col.">
  57. e-mail:
  58. </font>
  59. <br>
  60. <input type=\"text\" name=\"mail\" value=".$mail_val.">
  61. <br>
  62. </td>
  63. </tr>
  64. <tr>
  65. <td>
  66. <br>
  67. <font color=".$login_col.">
  68. Login:
  69. </font>
  70. <br>
  71. <input type=\"text\" name=\"login\" value=".$login_val.">
  72. <br>
  73. </td>
  74. </tr>
  75. <tr>
  76. <td>
  77. <br>
  78. <font color=".$haslo_col.">
  79. Hasło
  80. </font>
  81. <br>
  82. <input type=\"password\" name=\"haslo\">
  83. <br>
  84. </td>
  85. </tr>
  86. <tr>
  87. <td>
  88. <br>
  89. <font color=".$rhaslo_col.">
  90. Powtórz hasło
  91. </font>
  92. <br>
  93. <input type=\"password\" name=\"rhaslo\">
  94. <br>
  95. </td>
  96. </tr>
  97. <tr>
  98. <td>
  99. <br>
  100. <input type=\"submit\" value=\"Rejestruj\" name=\"submit\" style=\"background-color:#999999; color:#FFFFFF; width:150px; \">
  101. </td>
  102. </tr>
  103. </table>
  104. </form>";
  105. return;
  106. }//koniec funkcji
  107.  
  108. $submit=$_POST['submit'];//zadeklarowanie zmiennych z danymi z formularza
  109. $imie=$_POST['imie'];
  110. $mail=$_POST['mail'];
  111. $login=$_POST['login'];
  112. $haslo=$_POST['haslo'];
  113. $rhaslo=$_POST['rhaslo'];
  114. if(empty($submit))//Jeżeli nie został wysłany formularz, czyli strona jest dopiero uruchamiana.
  115. {
  116. rysuj("#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","","","","");//wywołanie funkcji z jej agrumentami (wszystkie pola puste a napisy białe).
  117. }
  118. else//w przeciwnym wypadku, czyli z formularza zostały wysłane jakieś dane
  119. { switch($_POST['submit'])
  120. {
  121. case ($imie=="")||(strlen($imie)<3)||(strlen($imie)>25): rysuj("#FF0000","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF",$imie, $mail, $login, "Proszę podać prawidłowe imię");//funkcja rysuj z argumentami(czerwony napis login i komunikat).
  122. break 7;//zaszedł warunek, koniec wykonywania dalszych instrukcji
  123. case ($mail=="")||(strlen($mail)<=3)||(strstr($mail,'@')==false)||(strlen($mail)>50): rysuj("#FFFFFF","#FF0000","#FFFFFF","#FFFFFF","#FFFFFF",$imie, $mail, $login, "Proszę podać prawidłowy e-mail:");//funkcja rysuj z argumentami
  124. break 6;
  125. case ($haslo=="")||(strlen($haslo)<=3)||(strtolower($haslo!==$rhaslo))||(strlen($haslo)>25): rysuj("#FFFFFF","#FFFFFF","#FFFFFF","#FF0000","#FF0000",$imie, $mail, $login, "Wprowadź i potwierdź hasło. <br> Hasło musi być dłuższe niż 3 znaki oraz składać się wyłącznie z małych liter");
  126. break 5;
  127. case ($login=="")||(strlen($login)<3)||(strlen($login)>25): rysuj("#FFFFFF","#FFFFFF","#FF0000","#FFFFFF","#FFFFFF",$imie, $mail, $login, "Login musi się mieścić w przedziale 3-25 znaków");
  128. break 4;
  129. }//switch
  130.  
  131. if($con=mysql_connect('localhost','root',''))//łącz się z bazą mysql na localhost z domyślnym użytkownikiem i hasłem
  132. {//jeżeli się połączyłeś wykonaj
  133. mysql_select_db('rejestracja');//wybierz bazę o nazwie 'rejestracja'
  134. $query=("SELECT `login` FROM `users` WHERE `login` = '".$login."'");//pobierz pole 'login' z tabeli 'users' gdzie pole 'login' jest takie samo jak zmienna $login(czyli to co było w formularzu)
  135. $do=mysql_query($query);//wykonaj j/w
  136. $line=mysql_fetch_array($do);//przypisanie tablicy wyników z powyższego zapytania
  137. if($line==false)//jeżeli zmienna $line nie instnieje(bo nie ma jeszcze takiego loginu w bazie), wykonaj
  138. {
  139. $date=date("Y-m-d h:i:s");//pobieranie aktualnej daty i czasu
  140. /*Dodanie pól do tabeli `users`, którym przypisane zostały dane z formularza, oraz data.
  141.   Dzięki niej dowiemy się kiedy się dany użytkownik rejstrował, może się przydać :)) */
  142. $add="INSERT INTO `users` (`id`,`imie`,`mail`,`login`,`haslo`,`data`) VALUES ('','".$imie."','".$mail."','".$login."','".$haslo."','".$date."')";
  143. $done=mysql_query($add);//wykonanie j/w
  144. mysql_close($con);//zamknięcie połączenia z bazą danych
  145. print "<font color=\"#FFFFFF\"> Dziękujemy za rejestrację, możesz się już </font> <a href=\"logowanie.php\" style=\"text-decoration:none; color:#FF0000\">zalogować</a>";//plik 'logowanie.php' leży już w waszej gestii
  146. }else//Jeżeli $line nie była pusta, znaczy to, że taki użytkownik już istnieje. Wtedy wykonaj
  147. {
  148. rysuj("#FFFFFF","#FFFFFF","#FF0000","#FFFFFF","#FFFFFF",$imie, $mail, $login, "Przykro nam, podany login już istnieje. Proszę wybrać inny");
  149. break;
  150. }
  151.  
  152. }
  153. }
  154. ?>
  155.  
  156. </body>
  157. </html>



wszystko dziala (o dziwo) dobrze, loguje mnie, rejestruje, ale czemu wyswietla ze sa bledy?

EDIT: wpadłem na pomysl... ze jak dam @ przez dana linijka z bledem to mi bledu nie wyswietla... i nie ma chyba wplywu na dzialanie skryptu... mozna tak zrobic? smile.gif
blooregard
notice to nie błąd, to informacja interpretera np. o użyciu niezainicjalizowanej zmiennej.

A można się tego pozbyć na dwa sposoby:
prawidłowy - zainicjalizowac zmienne przed użyciem
zastępczy, czyli "na pałę" - dać error_reporting(0); na początku skryptu
grzemach
ja tylko dodam od siebie że inicjializacja może obywać się w sposób:

  1. Zamiast:
  2. $submit=$_POST['submit'];
  3. dać:
  4. $submit=isset($_POST['submit'])?$_POST['submit']:'';
jacke
aha, dobra, dzienki smile.gif obu wam

a tak btw grzemach, jest jakas znaczna roznica w sposobie inicjacji pomiedzy tym co mam, a tym co zaproponowales? tongue.gif
grzemach
nie ma, jedynie przy raportowaniu błędów E_ALL nie będzie Ci błędami sypać...
mortus
Cytat(jacke @ 18.03.2010, 08:34:14 ) *
aha, dobra, dzienki smile.gif obu wam

a tak btw grzemach, jest jakas znaczna roznica w sposobie inicjacji pomiedzy tym co mam, a tym co zaproponowales? tongue.gif
Jest znacząca różnica. Taki zapis:
  1. $submit = isset($_POST['submit']) ? $_POST['submit'] : '';
oznacza to samo, co
  1. if(isset($_POST['submit'])) {
  2. $submit = $_POST['submit'];
  3. } else {
  4. $submit = '';
  5. }
Za samo zainicjowanie zmiennej odpowiada znak =, natomiast ? i : to swego rodzaju operator warunkowy (dokładniej operator trójkowy), który działa mniej więcej tak
Kod
warunek ? prawda : fałsz
Jeżeli warunek jest spełniony to zwróć prawda, w przeciwnym przypadku zwróć fałsz. Oczywiście zamiast warunku, prawdy i fałszu możemy używać wyrażeń. Przejrzyj bardziej szczegółowe omówienie operatorów porównania. A jeśli chodzi o różnicę, to operator trójkowy nie jest operatorem inicjacji zmiennych.
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.