Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Skrypt sprawdzający formularz - porady i ocena, Problem przy wyświetlaniu wartości pól formularza
tua1
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 23.10.2009

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


Witam

Dopiero co raczkuje w PHP, na początek chciałem stworzyć skrypt walidujący prosty formularz.
Dane przekazywane są z formularza w postaci dwóch tablic: required i optional.

Mój problem polega na tym że po zatwierdzeniu formularza, wypełnione pola stają się na nowo puste,
a staram się wymusić żeby tak nie było.

Wszystko znajduje się w jednym pliku:

skrypt:

  1. <?php
  2.  
  3. $a_req = (array) $_POST['required'];
  4. //$a_opt = (array) $_POST['optional'];
  5. array_validate($a_req);
  6.  
  7. /*
  8. Przeprowadza walidację danych z tablicy.
  9. Wykonując kolejne funkcje pomocnicze, gdy poprzednia zakończy swoje
  10. działanie z powodzeniem.
  11.  
  12. @param $array - tablica z wartościami do walidacji
  13. @return true - jeśli całe sprawdzanie zakończyło się powodzeniem.
  14. */
  15. function array_validate($array) {
  16.  
  17. if (array_empty_val($array)) {
  18. echo 'Nie wszystkie pola są wypełnione!<br />';
  19. return false;
  20. }
  21. array_walk($array, 'disable_danger_chars');
  22. array_walk($array, 'show_array_value');
  23. return true;
  24. }
  25.  
  26. /*Usuwa z przekazanej zmiennej znaki mogące zniszczyć
  27. strukturę strony itd. Dodatkowo dodając znak ucieczki w przypadku
  28. nie dokonania tego automatycznie.
  29.  
  30. @param $value - wartość do sprawdzenia
  31. */
  32.  
  33. function disable_danger_chars(&$value) {
  34. $value = htmlspecialchars($value);
  35. $value = addslashes($value);
  36. }
  37.  
  38. /*Sprawdza obecność pustych pól w tabeli.
  39. W zależności od stanu pola ustala wartość w tabeli zmiennych sesyjnych
  40. przy pomocy indeksu tego pola.
  41.  
  42. @return TRUE jeśli występują puste pola w tabeli
  43. */
  44.  
  45. function array_empty_val(&$array) {
  46. $has_empty = FALSE;
  47. foreach ($array as $key => &$value) {
  48. $value = trim($value);
  49. if (empty($value)) {
  50. $_SESSION[$key] = FALSE;
  51. $has_empty = TRUE;
  52. $a_empty_vals[] = $key;
  53. } else $_SESSION[$key] = TRUE;
  54. }
  55. return $has_empty;
  56. }
  57.  
  58. /*
  59.   Funkcja operująca na tablicy, przygotowana do przekazania funkcji array_walk().
  60. */
  61. function show_array_value($value, $key) {
  62. echo $key.'=>\''.$value.'\'<br />';
  63. }
  64.  
  65. function html_warn_msg($value) {
  66. static $msg = "<tr><td colspan=2 align=center><b>Powyższe pole jest wymagane</b></td></tr>";
  67. if (isset($_SESSION[$value])) echo $msg;
  68. }
  69.  
  70. function show_val_by_key($key, $flag=TRUE) {
  71. if ($flag) {
  72. if (isset($a_req[$key])) echo $a_req[$key];
  73. }
  74. // else to samo w przypadku tabeli optional.
  75. }
  76.  
  77. ?>
  78.  


formularz html:

  1. <form id="register_frm" action="" method="post">
  2. <table id="frm_tbl">
  3. <caption>Formularz Rejestracyjny</caption>
  4. <tr>
  5. <th>Identyfikator</th>
  6. </tr>
  7. <tr>
  8. <td><label for="login">Login</label></td>
  9. <td><input type="text" name="required[login]" id="login" maxlength="50" value="<?php show_val_by_key('login') ?>"/></td>
  10. </tr>
  11. <?php html_warn_msg('login') ?>
  12. <tr>
  13. <td><label for="pass">Hasło</label></td>
  14. <td><input type="password" name="required[pass]" id="pass" maxlength="50" /></td>
  15. </tr>
  16. <tr>
  17. <td><label for="pass2">Powtórz hasło</label></td>
  18. <td><input type="password" name="required[pass2]" id="pass2" maxlength="50"/></td>
  19. </tr>
  20. <tr>
  21. <td><label for="email">E-mail</label></td>
  22. <td><input type="text" name="required[email]" id="email" maxlength="50"/></td>
  23. </tr>
  24. <tr>
  25. <td><label for="email2">Powtórz E-mail:</label></td>
  26. <td><input type="text" name="required[email2]" id="email2" maxlength="50"/></td>
  27. </tr>
  28. <tr>
  29. <th>Dane Personalne</th>
  30. </tr>
  31. <tr>
  32. <td><label for="name">Imię</label></td>
  33. <td><input type="text" name="required[name]" id="name" maxlength="50" value="<?php show_val_by_key('name') ?>"/></td>
  34. </tr>
  35. <?php html_warn_msg('name') ?>
  36.  
  37. <tr>
  38. <td><label for="surname">Nazwisko</label></td>
  39. <td><input type="text" name="required[surname]" id="surname" maxlength="50" value="<?php show_val_by_key('surname') ?>"/></td>
  40. </tr>
  41. <?php html_warn_msg('surname') ?>
  42. <!-- inne pola -->
  43. <tr>
  44. <td colspan="2" align="left"><input type="reset" name="reset_btn" value="Wyczyść"/></td>
  45. </tr>
  46. <tr>
  47. <td colspan="2" align="right"><input type="submit" id="submit_btn" value="Rejestruj"/></td>
  48. </tr>
  49. </table>
  50. </form>



Proszę o porady.


Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 16:18