Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie formularzy
Forum PHP.pl > Forum > PHP
Mephis
Witam.

Nie wymyśliłem odpowiedniej nazwy tematu, ale chyba coś w ten deseń. Na wstępie informuję, że w PHP jestem laikiem. Od pewnego czasu borykam się z pewnym problemem. Otóż tworzę stronę z ustawieniami konta dla gry. Póki co wszystko szło zgodnie z przewidywaniami, do czasu gdy poza 1 opcją ustawień wprowadziłem drugą: zmiana hasła i zmiana avatara. Obie rzeczy znajdują się na tej samem stronie, stąd wynika problem.

  1. <?php
  2. require_once('inc/system.php');
  3. if(empty($oUser['user'])) header('location: index.php');
  4.  
  5. $tytul = "Ustawienia konta";
  6.  
  7. if(!empty($_POST)){
  8. if(empty($_POST['old'])) $msg = "<p class='error'>Podaj stare hasło</p>";
  9. elseif(empty($_POST['new'])) $msg = "<p class='error'>Podaj nowe hasło</p>";
  10. elseif(empty($_POST['new'])) $msg = "<p class='error'>Podaj powtórnie nowe hasło</p>";
  11. elseif($_POST['new'] != $_POST['newr']) $msg = "<p class='error'>Hasła różnią się</p>";
  12. elseif(strlen($_POST['new']) < 5) $msg = "<p class='error'>Nowe hasło musi zawierać minimum 5 znaków</p>";
  13. else {
  14. $pass = md5($_POST['new']);
  15. $old = md5($_POST['old']);
  16. if($oUser['haslo'] != $old) $msg = "<p class='error'>Nieprawidłowe stare hasło</p>";
  17. else {
  18. mysql_query("update users set haslo = '".$pass."' where user = ".$oUser['user']." limit 1");
  19. $oUser['haslo'] = $pass;
  20. $msg = "<p class='info'>Zmieniono hasło</p>";
  21. }
  22. }
  23. }
  24. $zmiana_hasla ="
  25. <h2>Zmiana hasła</h2>
  26. <form action='#' method='post'>
  27. <table cellspacing='10' style='margin:0 auto'>
  28. <tr>
  29. <td width='150' align='right'>Stare hasło:</td>
  30. <td width='150'><input class='input' type='password' name='old'/></td>
  31. </tr>
  32. <tr>
  33. <td align='right'>Nowe hasło:</td>
  34. <td><input class='input' type='password' name='new'/></td>
  35. </tr>
  36. <tr>
  37. <td align='right'>Powtórz hasło:</td>
  38. <td><input class='input' type='password' name='newr'/></td>
  39. </tr>
  40. <tr>
  41. <td colspan='2' align='center'><input class='przycisk' type='submit' value='zmień'/></td>
  42. </tr>
  43. </table>
  44. ";
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51. $uploaddir = "obrazy_profilowe"; // Where you want the files to upload to - Important: Make sure this folders permissions is 0777!
  52. $allowed_ext = "jpg, gif, png"; // These are the allowed extensions of the files that are uploaded
  53. $max_size = "20480"; // 20kb
  54. $max_height = "150"; // This is in pixels - Leave this field empty if you don't want to upload images
  55. $max_width = "150"; // This is in pixels - Leave this field empty if you don't want to upload images
  56.  
  57.  
  58. $extension = pathinfo($_FILES['file']['name']);
  59. $extension = $extension[extension];
  60. $allowed_paths = explode(", ", $allowed_ext);
  61.  
  62. for($i = 0; $i < count($allowed_paths); $i++) {
  63. if ($allowed_paths[$i] == "$extension") {
  64. $ok = "1";
  65. }
  66. }
  67.  
  68. if ($ok == "1") {
  69. if($_FILES['file']['size'] > $max_size)
  70. {
  71. print "Rozmiar obrazka jest zbyt duży!";
  72. }
  73.  
  74. if ($max_width && $max_height) {
  75. list($width, $height, $type, $w) = getimagesize($_FILES['file']['tmp_name']);
  76. if($width > $max_width || $height > $max_height)
  77. {
  78. print "Rozmiary obrazka nie mogą przekroczyć 150 wysokości i 200 długości!";
  79. }
  80. }
  81.  
  82. if(is_uploaded_file($_FILES['file']['tmp_name']))
  83. {
  84. move_uploaded_file($_FILES['file']['tmp_name'],$uploaddir.'/'.$_FILES['file']['name']);
  85. }
  86. print "Przesłano pomyślnie!";
  87. }
  88. else {
  89. print "Nie wybrano pliku!";
  90. }
  91. $zmiana_avatara = "
  92. <h2>Zmiana avatara</h2>
  93. <form action='ustawienia.php' method='post' ENCTYPE='multipart/form-data'>
  94. Plik: <input type='file' name='file' size='30'>
  95. <input class='przycisk' type='submit' value='prześlij'>
  96. </form>
  97. ";
  98.  
  99. $gra = "
  100. ".$zmiana_hasla."
  101. ".$zmiana_avatara."
  102. ";
  103. require_once('inc/szablon.php');
  104.  
  105. ?>
  106.  


Zdaję sobie sprawę z tego (chyba, że się mylę biggrin.gif), że pierwsze co zrobi serwer, to sprawdzi czy z pierwszych pól zostały wysłane jakiekolwiek informacje. Tak też tym samym, gdy wyślę "avatar", strona wywali wiadomość, że nie wprowadziłem danych do pierwszego pola "stare hasło". I chodzi mi własnie o to, w jaki sposób można by rozwiązać ten problem?

Zapewne mógłbym to zrobić na iframach (poszczególne opcje), ale to raczej większość by mi odradziła...

Dobrym rozwiązaniem byłoby też, gdyby po wejściu w ustawienia.php wyświetlało mi się menu, w którym byłyby linki "Zmień hasło", "Zmień avatar" - ale wtedy chciałbym, aby treść tych stron/podstron również znajdowała się jeszcze w ustawienia.php (chce jak najbardziej ograniczyć ilość plików).

Ktoś ma jakieś pomysły? Proszę o pomoc.

(nie byłem pewny działu)
Damonsson
Po pierwsze otwartego forma wypadałoby zamknąć.
Po drugie submitom również można nadawać name, więc można wysyłać 1000 niezależnych od siebie formularzy z jednej strony.

  1. <input class='przycisk' type='submit' value='prześlij' name='submit1' />


  1. if(isset($_POST['submit1'])){


edit: Inputy też można zamknąć przy okazji.
Mephis
Chwile się pogłowiłem o co chodzi z tym if(isset ale już wszystko działa należycie, dziękuję za pomoc biggrin.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.