Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Rejestracja kilku etapowa
Forum PHP.pl > Forum > Przedszkole
tomi1985
Witam,

mam pewien problem odnośnie rejestracji kilku etapowej, a mianowicie:

Cała rejestracja przebiega bez najmniejszych zarzutów w sytuacji kiedy tylko jedna osoba w danym momencie się rejestruje natomiast kiedy tylko probuje się zarejestrować więcej osobów to dane tych osób w niewyjaśniony przezemnie sposób zostają usuwane....
w Praktyce wygląda to tak jakby dane zawarte z <form> wogóle nie zostały przesyłane dalej ;/

o to kod:

  1. $i = $_GET['i'];
  2.  
  3. include('tablica.inc');
  4.  
  5. $user = array("login","haslo","e_mail");
  6.  
  7. $user_kontakt = array("firma_user","ulica_user","miejscowosc_user","kod_user","woj_user","e_mail_user","tel_user");
  8.  
  9. $dane_user = array("firma","kategoria","wojewodztwo","ulica","kod","miejscowosc","e_mail_oglo","telefon","telefon 2","fax","strona_www","cena_od","cena_do","slowa_kluczowe","opis","cennik","grill","parking","zwierze",
  10. "konie","plaza","sauna","silownia","siatkowka","garaz","taras","prysznic","rodzina","rowery","restauracja",
  11. "lodowka","pub","basen","plac","kuchnia","toaleta","czajnik","radio","internet","tel","lazienka","tv","tv_sat",
  12. "pks","pkp","kapielisko","wyciag","trasa_narty","ognisko","sklep","jezioro","morze","gory","wedkarstwo",
  13. "grzyby","zabytki");
  14.  
  15. $foty = array("file1","file2","file3","file4","file5","file6","file7","file8","file9","file10",
  16. "file11","file12","file13","file14","file15","file16","file17","file18","file19","file20");
  17.  
  18.  
  19. if ($i == 1)
  20. {
  21. //dane usera
  22. }
  23.  
  24. //dane obiektu
  25. if ($i == 2)
  26. {
  27. //Jesli nie sa wypelnione pola
  28. if (empty($_POST['login']) || empty($_POST['haslo']) || empty($_POST['powtorz_haslo']) || empty($_POST['e_mail']) )
  29.  
  30. {
  31. "
  32. <script type=\"text/javascript\">
  33.  
  34. var link=\"link\";
  35.  
  36. alert(\"Proszę uzupełnić wymagane pola\");
  37. {
  38. window.location.assign(link);
  39. }
  40.  
  41. </script>
  42. ";
  43. }
  44.  
  45. //jesli dane są wypełnione
  46. if (!empty($_POST['login']) && !empty($_POST['haslo']) && !empty($_POST['powtorz_haslo']) && !empty($_POST['e_mail']))
  47.  
  48. {
  49. //jeśli drugie hasło jest różne
  50. if ($_POST['haslo'] != $_POST['powtorz_haslo'])
  51. {
  52. "
  53. <script type=\"text/javascript\">
  54.  
  55. var link=\"link\";
  56.  
  57. alert(\"Drugie hasło jest różne\");
  58. {
  59. window.location.assign(link);
  60. }
  61.  
  62. </script>
  63. ";
  64. }
  65.  
  66. //jesli hasła są takie same
  67. if ($_POST['haslo'] == $_POST['powtorz_haslo'])
  68.  
  69. {
  70. include('db.php');
  71. //sprawdzenie poprawności loginu
  72. $query = "SELECT COUNT(*) FROM user WHERE login='$_POST[login]'";
  73. $result = mysql_query($query) or die(mysql_error());
  74. while($row = mysql_fetch_array($result))
  75. {
  76. //jeśli taki user już istnieje
  77. if($row["COUNT(*)"] > 0)
  78. {
  79. "
  80. <script type=\"text/javascript\">
  81.  
  82. var link=\"link\";
  83.  
  84. alert(\"Taki Login już istnieje\");
  85. {
  86. window.location.assign(link);
  87. }
  88.  
  89. </script>
  90. ";
  91. }
  92.  
  93.  
  94. if($row["COUNT(*)"] == 0)
  95. {
  96.  
  97. //user
  98. for($u = 0; $u < 3; $u++)
  99. {
  100. $_SESSION[$user[$u]] = $_POST[$user[$u]];
  101. }
  102.  
  103. //dane obiektu
  104. }
  105.  
  106. }
  107. mysql_close($con);
  108.  
  109. }
  110. }
  111. }
  112.  
  113. //kontakt usera
  114. if ($i == 3)
  115. {
  116. if(empty($_POST['firma']) || empty($_POST['kategoria']) || empty($_POST['wojewodztwo']) || empty($_POST['ulica']) || empty($_POST['miejscowosc']))
  117. {
  118. "
  119. <script type=\"text/javascript\">
  120.  
  121. var link=\"link\";
  122.  
  123. alert(\"Proszę uzupełnić wymagane pola\");
  124. {
  125. window.location.assign(link);
  126. }
  127.  
  128. </script>
  129. ";
  130. }
  131.  
  132. else
  133. {
  134. //upload file
  135. include('save_file.php');
  136.  
  137. //foty user
  138. for($u = 0; $u < 20; $u++)
  139. {
  140. $_SESSION[$foty[$u]] = $$foty[$u];
  141. }
  142.  
  143. //dane user
  144. for($u = 0; $u < 55; $u++)
  145. {
  146. $_SESSION[$dane_user[$u]] = $_POST[$dane_user[$u]];
  147. }
  148.  
  149. //dane usera kontakt
  150. }
  151. }
  152.  
  153. if ($i == 4)
  154. {
  155.  
  156. //user kontakt
  157. for($u = 0; $u < 7; $u++)
  158. {
  159. $_SESSION[$user_kontakt[$u]] = $_POST[$user_kontakt[$u]];
  160. }
  161. //pakiet i kilka iinych spraw
  162. }
  163.  
  164. if ($i == 5)
  165. {
  166. if(isset($_POST['the_last_step']) && !empty($_SESSION['firma']))
  167. {
  168. include('db.php');
  169. $query = "SELECT COUNT(*) FROM user WHERE login='$_SESSION[login]'";
  170.  
  171. $result = mysql_query($query) or die(mysql_error());
  172. while($row = mysql_fetch_array($result))
  173. {
  174. if($row["COUNT(*)"] == 0)
  175. {
  176. // save dane
  177. include('save_dane.php');
  178.  
  179.  
  180. }
  181. if($row["COUNT(*)"] > 0)
  182. {
  183. //taki login juz jest
  184. }
  185.  
  186. }
  187. mysql_close($con);
  188. }
  189.  
  190. if(!isset($_POST['the_last_step']))
  191. {
  192. //błąd
  193. }
  194.  
  195. }
  196.  
  197. "
  198. </body>
  199. </html>
  200. ";
  201.  


Czy różne przeglądarki mogą wywoływać taki błąd ? lub tzw "przyjazne linki" ? naprawdę sam już nie wiem gdzie tkwi błąd sad.gif
szalek01
Nie szukałem błędu o którym mówisz. Ale chciałbym Ci zaproponować byś ogarną trochę kod.
1) nie mieszaj kodu html z php
2) masz sql-injection, jeśli ustawisz
$_POST[login] = " xxx'; DROP TABLE `user`; -- "; stracisz tabelę.

tomi1985
rozumiem ze musze zastasować:

np.
$login = mysql_escape_string($_POST[login]); ?

lecz nie wiem jakbym mniewiecej mial nie mieszac php z html jesli mam np.

if ($i == 1)
{
echo "jakis kod html";
}

w ten sposób ?

$kod = "jakis kod html";

if ($i == 1)
{
$kod;
}
szalek01
Cytat
$login = mysql_escape_string($_POST[login]); ?

tak, ale lepiej zainwestuj czas w PDO

co do mieszania kodu...
lepiej mieć oddzielny plik z html, zobacz jak działają systemy szablonów
bostaf
Cytat(tomi1985 @ 10.10.2012, 19:04:51 ) *
lecz nie wiem jakbym mniewiecej mial nie mieszac php z html

Zacznij na przykład wg takiego szablonu:
  1. <?php
  2. header("Content-type: text/html; charset=utf-8");
  3. if(!isset($_SESSION)) session_start();
  4. if(isset($_POST) {
  5. // tu obsługa wszystkich formularzy
  6. // ...
  7. // zakończona redirectem
  8. header('Location: ' . $_SERVER['REQUEST_URI']);
  9. }
  10. // Teraz dajesz całą logikę, manipulację zmiennymi, kalkulacje, itp.
  11. // w taki sposób, żeby na końcu uzyskać proste zmienne (kontrolne boole, stringi, tablice),
  12. // które można przekazać do tzw. widoku (tego, co będzie pokazane osobie przeglądającej stronę)
  13. // i tam w prosty sposób wykorzystać.
  14. // np:
  15. // ... bla bla bla masa obliczeń
  16. $zalogowany = FALSE;
  17. $menu = array('Home', 'Archiwum', Kontakt');
  18. $title = 'Home';
  19. ?>
  20. <!-- dopiero teraz widok -->
  21. <!DOCTYPE>
  22. <html>
  23. <head>
  24. <title><?php echo $title;?></title>
  25. <!-- i ta cała reszta -->
  26. <body>
  27. <?php if($zalogowany) : ?>
  28. <div>Coś dla zalogowanych</div>
  29. <?php endif;?>
  30. <ul>
  31. <?php foreach($menu as $element_menu) { ?>
  32. <li><?php echo $element_menu;?></li>
  33. <?php } ?>
  34. </ul>
  35. <!-- itd... -->
  36. </body>
  37. </html>

Jak ogarniesz taki szablon, to nie powinieneś mieć problemów z dzieleniem projektu pliki zawierające modele, kontrolery i widoki.
tomi1985
Cytat
co do mieszania kodu...
lepiej mieć oddzielny plik z html, zobacz jak działają systemy szablonów


a poźniej includować ?

np.

  1. <?php
  2.  
  3. include('regi1.html');
  4.  
  5. ?>


przepraszam za moją niewiedzę i wręcz czasem absurdalne pytanie ale dopiero się ucze sad.gif "a kto pyta nie błądzi ":)

a co do kolegi który pokazał szablon to miało by to postać mniewięcej taką:



  1. <?php
  2. if($i ==1)
  3. {
  4. ?>
  5.  
  6. formularz html
  7.  
  8. <?php
  9. }
  10. ?>


a co do mojego błędu, tzn o nie przesyłanie danych postem przy większej ilości userów... mogło to być własnie spowodowane tym ze mieszałem kod php z html ?
bostaf
Cytat(tomi1985 @ 10.10.2012, 19:56:12 ) *
a poźniej includować ?
np.
  1. <?php
  2. include('regi1.html');
  3. ?>

Tak jest.

Cytat(tomi1985 @ 10.10.2012, 19:56:12 ) *
przepraszam za moją niewiedzę i wręcz czasem absurdalne pytanie ale dopiero się ucze sad.gif "a kto pyta nie błądzi ":)

Soon, young padawan. Very soon.

Cytat(tomi1985 @ 10.10.2012, 19:56:12 ) *
a co do kolegi który pokazał szablon to miało by to postać mniewięcej taką:
  1. <?php
  2. if($i ==1)
  3. {
  4. ?>
  5.  
  6. formularz html
  7.  
  8. <?php
  9. }
  10. ?>

Tak.

Cytat(tomi1985 @ 10.10.2012, 19:56:12 ) *
a co do mojego błędu, tzn o nie przesyłanie danych postem przy większej ilości userów... mogło to być własnie spowodowane tym ze mieszałem kod php z html ?

Mogło. W takim bałaganie ciężko wyłowić przyczynę błędu. Dlatego trzeba zacząć od porządku.
Mi osobiście nie chce się nawet analizować takiego kodu, w którym nie widać jakiejś myśli przewodniej.
tomi1985
właśnie wszystko pozmieniałem, jutro zaimplementuje na serwer i się okaże czy własnie w tym tkwił problem. Osobiście mam nadzieję że tak biggrin.gif

p.s macie jakieś rady na przyszłość na co zwracać szczególną uwagę przy tworzeniu serwisów....

dopiero się uczę i każda rada będzie tu na wagę złota
bostaf
Czytać, czytać, czytać...
Książki, manuale, blogi, fora.
Na początku nie wszystko będzie jasne, ale z czasem poukłada się w całość.

No i po angielsku. Są fajne polskie serwisy (takie jak php.pl) i blogi, ale przytłaczająca większość jest po angielsku. Polecam stackoverflow.com - genialny serwis Q&A.

Jak pierwszy raz próbujesz użyć jakiejś funkcji, przeczytaj o niej cały rozdział w manualu.
Jak analizujesz jakiś kod, przeczytaj w manualu o każdej zastosowanej funkcji.
Jak ktoś rzuci hasło, którego nie rozumiesz, wygoogluj je.

Szczególna uwaga? Gdziekolwiek na jakikolwiek temat dotyczący aplikacji internetowych czytam, przewijają się komentarze o wzorcach projektowych, SQL injection i XSS.
Pomyśl tez o takim przypadku, że aplikacja budowana jest przez kilku ludzi. Na początek dwóch. Jeden jest obcykany w SQLu i PHP, drugi w HTMLu i CSS. Projektuj tak, żeby obaj mogli pracować jednocześnie, nie mieszając jeden drugiemu w kodzie.
tomi1985
Moja modyfikacja skryptu

  1. <?php
  2.  
  3. $i = $_GET['i'];
  4.  
  5. $user = array("login","haslo","e_mail");
  6.  
  7. $user_kontakt = array("firma_user","ulica_user","miejscowosc_user","kod_user","woj_user","e_mail_user","tel_user");
  8.  
  9. $dane_user = array("firma","kategoria","wojewodztwo","ulica","kod","miejscowosc","e_mail_oglo",
  10. "telefon","telefon 2","fax","strona_www","cena_od","cena_do","slowa_kluczowe","opis","cennik",
  11. "grill","parking",
  12. "zwierze","konie","plaza","sauna","silownia","siatkowka","garaz","taras","prysznic","rodzina",
  13. "rowery","restauracja","lodowka","pub","basen","plac","kuchnia","toaleta","czajnik","radio",
  14. "internet","tel","lazienka","tv","tv_sat","pks","pkp","kapielisko","wyciag","trasa_narty","ognisko",
  15. "sklep","jezioro","morze","gory","wedkarstwo","grzyby","zabytki");
  16.  
  17. $foty = array("file1","file2","file3","file4","file5","file6","file7","file8","file9","file10",
  18. "file11","file12","file13","file14","file15","file16","file17","file18","file19","file20");
  19.  
  20.  
  21. if ($i == 1)
  22. { //formularz 1
  23. include('regi1.html');
  24. }
  25.  
  26. //dane obiektu
  27. if ($i == 2)
  28. {
  29. //Jesli nie sa wypelnione pola
  30. if (empty($_POST['login']) || empty($_POST['haslo']) || empty($_POST['powtorz_haslo']) || empty($_POST['e_mail']) )
  31.  
  32. {
  33. ?>
  34.  
  35. //bład
  36.  
  37. <?php
  38. }
  39.  
  40. //jesli dane są wypełnione
  41. if (!empty($_POST['login']) && !empty($_POST['haslo']) && !empty($_POST['powtorz_haslo']) && !empty($_POST['e_mail']))
  42.  
  43. {
  44. //jeśli drugie hasło jest różne
  45. if ($_POST['haslo'] != $_POST['powtorz_haslo'])
  46. {
  47. ?>
  48.  
  49. //błąd
  50.  
  51. <?php
  52. }
  53.  
  54. //jesli hasła są takie same
  55. if ($_POST['haslo'] == $_POST['powtorz_haslo'])
  56.  
  57. {
  58. include('db.php');
  59. $login = mysql_escape_string($_POST['login']);
  60.  
  61. //sprawdzenie poprawności loginu
  62. $query = "SELECT COUNT(*) FROM user WHERE login='$login'";
  63. $result = mysql_query($query) or die(mysql_error());
  64. while($row = mysql_fetch_array($result))
  65. {
  66. //jeśli taki user już istnieje
  67. if($row["COUNT(*)"] > 0)
  68. {
  69. ?>
  70.  
  71. //błąd
  72.  
  73. <?php
  74. }
  75.  
  76.  
  77. if($row["COUNT(*)"] == 0)
  78. {
  79.  
  80. //user
  81. for($u = 0; $u < 3; $u++)
  82. {
  83. $_SESSION[$user[$u]] = $_POST[$user[$u]];
  84. }
  85.  
  86. include('regi2.html');
  87. }
  88.  
  89. }
  90. mysql_close($con);
  91.  
  92. }
  93. }
  94. }
  95.  
  96. //kontakt usera
  97. if ($i == 3)
  98. {
  99.  
  100.  
  101. if(empty($_POST['firma']) || empty($_POST['kategoria']) || empty($_POST['wojewodztwo']) || empty($_POST['ulica']) || empty($_POST['miejscowosc']))
  102. {
  103. ?>
  104. //błąd
  105.  
  106. <?php
  107. }
  108.  
  109. else
  110. {
  111. //upload file
  112. include('save_file.php');
  113.  
  114. //foty user
  115. for($u = 0; $u < 20; $u++)
  116. {
  117. $_SESSION[$foty[$u]] = $$foty[$u];
  118. }
  119.  
  120. //dane user
  121. for($u = 0; $u < 55; $u++)
  122. {
  123. $_SESSION[$dane_user[$u]] = $_POST[$dane_user[$u]];
  124. }
  125.  
  126. include('regi3.html');
  127. }
  128. }
  129.  
  130. if ($i == 4)
  131. {
  132.  
  133.  
  134. //user kontakt
  135. for($u = 0; $u < 7; $u++)
  136. {
  137. $_SESSION[$user_kontakt[$u]] = $_POST[$user_kontakt[$u]];
  138. }
  139.  
  140. include('regi4.html');
  141. }
  142.  
  143. if ($i == 5)
  144. {
  145.  
  146. if(isset($_POST['the_last_step']))
  147. {
  148.  
  149.  
  150. include('db.php');
  151.  
  152. $login = mysql_escape_string($_SESSION['login']);
  153.  
  154. $query = "SELECT COUNT(*) FROM user WHERE login='$login'";
  155.  
  156. $result = mysql_query($query) or die(mysql_error());
  157. while($row = mysql_fetch_array($result))
  158. {
  159. if($row["COUNT(*)"] == 0)
  160. {
  161. // save dane
  162. include('save_dane.php');
  163.  
  164. }
  165.  
  166.  
  167. <?php
  168. }
  169. if($row["COUNT(*)"] > 0)
  170. {
  171.  
  172. include('regi_blad.html');
  173.  
  174. }
  175.  
  176. }
  177. mysql_close($con);
  178. }
  179.  
  180. if(!isset($_POST['the_last_step']))
  181. {
  182. include('regi_blad.html');
  183. }
  184.  
  185. }
  186. ?>
bostaf
Cytat(tomi1985 @ 11.10.2012, 17:21:59 ) *
Moja modyfikacja skryptu

Poza przeniesieniem kilku linijek w inne miejsce, jest tak namieszane jak było.
Popatrz na szablon, który Ci pokazałem, przeczytaj komentarze, które są w nim wypisane. Skopiuj ten szablon, wklej do nowego pliku i zamiast komentarzy i przykładowych zmiennych wstaw Swój kod. Odseparuj operacje na bazie danych od algorytmów nie wymagających danych z bazy i od HTMLa. Przepraszam, ale ja jaśniej niż w tym szablonie nie potrafię tego wytłumaczyć.
tomi1985
ehhh.. to ja już nie wiem jak nie mam mieszać html z php sad.gif
Evinek
http://utemplate.umbraprojekt.pl
Spróbuj tym się pobawić. Możesz również inne klasy poszukać.
tomi1985
czyli programowanie obiektowe ?
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.