Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Poprawność skryptu ;)
Forum PHP.pl > Forum > Przedszkole
falfin
Witam. Zastanawiam się czy taki skrypt (jak ten ten poniżej) jest prawidłowy...Czy warto tworzyć jeden duży plik zawierający razem skrypt i formularz, czy lepiej je robijać na dwa pliki?
Pozatym jeżeli komus sie chce to prosze o wypisanie mi jakie błedy (jeżeli chodzi o styl pisania) popełniam.
Ps. zaznaczam że w php jestem jeszcze baaardzo zielony.
Pozdrawiam i z góry dziękuje za odpowiedzi.

  1. <?php ob_start(); ?>
  2. <?php session_start();?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  4. <html>
  5. <head>
  6. <link rel="stylesheet" href="style.css" type="text/css" />
  7. <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-2" />
  8. <title>
  9. Panel administracyjny-Rejestracja
  10. </title> 
  11. </head>
  12. <body>
  13.  
  14.  
  15.  
  16. <?php
  17. if (!isset($wyslany))
  18. {
  19. ?>
  20.  
  21. <div id="duzy">
  22.  
  23. <h1>Rejestracja</h1>
  24.  
  25. <form action="rejestracja.php?wyslany='tak'" method=post>
  26.  
  27. <table border=0>
  28. <tr bgcolor=olive>
  29. <td width="150">Wymagane informacje</td>
  30. <td width="100"></td>
  31. </tr>
  32. </tr>
  33. <tr>
  34. <td>Nazwa użytkownika*:</td>
  35. <td align="center"><input type="text" name="nazwa_uz" size="30" maxlength="30"></td>
  36. </tr>
  37. <tr>
  38. <td>Hasło*:</td>
  39. <td align="center"><input type="text" name="haslo" size="30" maxlength="30"></td>
  40. </tr>
  41. <tr>
  42. <td>Powtórz hasło*:</td>
  43. <td align="center"><input type="text" name="haslo2" size="30" maxlength="30"></td>
  44. </tr>
  45. <tr>
  46. <td>Adres e-mail*:</td>
  47. <td align="center"><input type="text" name="email" size="30" maxlength="30"></td>
  48. </tr>
  49. <tr>
  50. <td colspan="2" align="right"><input type="submit" value="wyslij"></td>
  51. </tr>
  52.  
  53.  
  54.  
  55. </table>
  56. </form>
  57.  
  58.  
  59. </div>
  60.  
  61. </body>
  62. </html>
  63.  
  64.  
  65.  
  66. <?php
  67. }
  68. elseif (isset($wyslany) && !isset($prawidlowy))
  69. {
  70.  
  71. $nazwa_uz= $_POST['nazwa_uz'];
  72. $haslo= $_POST['haslo'];
  73. $haslo2= $_POST['haslo2'];
  74. $email= $_POST['email'];
  75. $czas = time();
  76.  
  77.  
  78. // SPRAWDZENIE  CZY WSZYSTKIE DANE  ZOSTALY PODANE
  79. if (!$nazwa_uz || !$haslo || !$haslo2 || !$email)
  80. {
  81. echo ' Nie podales wszyszystkich danych. <br />Wróć do poprzedniej strony i uzupełnij brakujące pola .' ; // SPRAWDZENIE  CZY WSZYSTKIE DANE  ZOSTALY PODANE
  82. }
  83.  
  84.  
  85. else
  86. {
  87. //SPRAWDZENIE  POPRAWNOSCI DANYCH
  88. if(strlen($nazwa_uz)>16)
  89. {
  90. echo ' Podana nazwa użytkownika jest za długa. Powinna ona zawierać mniej niż 16 znaków.';
  91. }
  92.  
  93. if(strlen($haslo)<5)
  94. {
  95. echo 'Podane hasło jest za krótkie! Ze względów bezpieczeństwa,powinno ono zawerać conajmniej 5 znaków.';
  96. }
  97.  
  98. if ($haslo != $haslo2)
  99. {
  100. echo 'Podane hasła są różne!';
  101. }
  102.  
  103. if (!eregi ("[a-zA-z0-9_]+@[a-zA-z0-9-]+.[a-zA-z0-9-.]+$", $email))
  104. {
  105. echo 'Podany adres e-mail jest nie poprawny.';
  106. }
  107. }
  108.  
  109.  
  110. // JEZELI  WSZYSTKO  SIE  ZGADZA TO  REJESTRACJA
  111.  
  112. // SPRAWDZENIE  CZY  MECHANIZM  DODAWANIA  ZNAKOW  JEST  WLACZZONY  I  JEZELI  NIE  TO  ICH  DODANIE
  113. {
  114. $nazwa_uz = addslashes($nazwa_uz);
  115. $haslo = addslashes ($haslo);
  116. $email=addslashes ($email);
  117. }
  118.  
  119. //POLACZENIE  Z BAZA DANYCH
  120. require('polaczenie.php');  //PLIK  POLACZENIA  W  OSOBNYM  PLIKU  PONIEWAZ BEDZIE
  121. //WYKORZYSTYWANY W INNYCH  APLIKACJACH :)
  122.  
  123. mysql_select_db('test');
  124.  
  125. //JEZELI NAWIAZANO POLACZENIE
  126. //SPRAWDZENIE CZY PODANA NAZWA  NIE  JEST JUZ ZAJETA
  127. $zapytanie1= "select * from uzytkownicy where nazwa_uz='$nazwa_uz' ";
  128. $wynik1 = mysql_query($zapytanie1, $mysql) or die(mysql_error());
  129. if(!$wynik1)
  130. {
  131. echo 'Przepraszamy rejestracja w tej chwili nie jest mozliwa. Prosze spróbowac pozniej
    .<br/>'
    ;
  132. exit;
  133. }
  134. else
  135. {
  136. if(mysql_num_rows($wynik1)>0)
  137. {
  138. echo 'Wybrany nick jest juz zajety. Wybierz inny i spróuj ponownie.<br/>';
  139. }
  140.  
  141. else
  142. { //JEZELI  NICK  NIE  JEST  ZAJETY REJESTRACJA
  143. $zapytanie2= "insert into uzytkownicy values ('$nazwa_uz' , sha1('$haslo') , '$email' , 'administrator', '$czas' ) ";
  144. $wynik2 = mysql_query($zapytanie2, $mysql) or die(mysql_error());
  145. $prawidlowy='tak';
  146. }
  147.  
  148. if(!$wynik2)
  149. {
  150. echo '2Przepraszamy rejestracja w tej chwili nie jest mozliwa. Prosze spróbowac poznie
    j.<br/>'
    ;
  151. }
  152.  
  153. else
  154. {
  155. echo'Rejestracja zakończona sukcesem. W celu zalogowania wróć na strone główną';
  156. echo '<a href="index.php">Powrót </a>';
  157. }
  158. }
  159. }
  160. ?>


Ps. Jeszcze jedno winksmiley.jpg na razie ten skrypt rejestruje wszystkich domyślnie jako administratorów,
($zapytanie2= "insert into uzytkownicy values ('$nazwa_uz' , sha1('$haslo') , '$email' , 'administrator', '$czas' ) ";)
ale jest on tylko na localhoscie i tak jest po prostu mi wygodniej. Oczywiście niedługo zostanie to zmienione
strife
Cytat
.Czy warto tworzyć jeden duży plik zawierający razem skrypt i formularz, czy lepiej je robijać na dwa pliki?


Nie warto bo mieszasz, logikę z wyglądem. Umieść tą walidację w jakiejś klasie bądź funkcji, takich rzeczy nie robi się z poziomu szablonu. Poczytaj o założeniach MVC. Co do stylu pisania, wywal zbędne klamry

  1. <?php if ( isset( $dupa ) ) : ?>
  2. KOD HTML
  3. <?php endif; ?>


Tak jest bardziej przejrzyście, poza tym więcej wcięć, staraj się unikać liczb w nazwach zmiennych. To tyle ode mnie.

Pozdrawiam.
falfin
Dzięki strife za odpowiedz. Teraz juz chyba wiem co z tym zrobić.
Zkmylił mnie jeden z rozdziałów ksiązki Biblia PHP 4 gdzie zalecali używania samoprzetwarzających sie formularzy- rozumię ze to już nie aktualne?
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.