Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][HTML]Walidacja formularza
nergla
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 8.05.2009

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


Mam taki formularz:
  1. <?php
  2. if (count($_POST))
  3. {
  4.        $_POST['nazw'];
  5.        $_POST['imie'];
  6.        $_POST['miasto'];
  7.        $_POST['kod'];
  8.        $_POST['ul'];
  9.        $_POST['nr1'];
  10.        $_POST['nr2'];
  11.        $_POST['tel'];
  12.        $_POST['x1'];
  13.        $_POST['x2'];
  14.        $_POST['wys'];
  15.        $body='';
  16.        
  17.        
  18.  
  19.    $email = 'mail@gmail.com';
  20.    $subject = 'temat';
  21.    $message = 'Dziękujemy za wysłanie formularza';
  22.    $error = 'Wystąpił błąd podczas wysyłania formularza';
  23.    $charset = 'iso-8859-2';
  24.    
  25.    $head =
  26.        "MIME-Version: 1.0r\n" .
  27.        "Content-Type: text/plain; charset=$charsetr\n" .
  28.        "Content-Transfer-Encoding: 8bit";
  29.  
  30.    echo mail($email, $subject , $body, $head) ? $message : $error;
  31. }
  32. else
  33. {
  34. ?>
  35. <form action="?" method="post"><div id="info">Zamówienie dotyczy
  36. tylko czarnej folii o standardowej grubości 1,1mm, pozostałe rodzaje
  37. folii oraz usługi wykonywane na miejscu u klienta dostępne są na
  38. zamówienie telefoniczne.</div>
  39. <div id="subheader">Dane adresowe</div>
  40. Nazwisko: <input maxlength="60" size="18" name="nazw" /><br />
  41. Imię: <input maxlength="40" size="16" name="imie" /><br /><br />
  42. Miejscowość: <input maxlength="60" size="18" name="miasto" /><br />
  43. Kod pocztowy: <input maxlength="6" size="6" name="kod" /><br />
  44. Ulica: <input maxlength="60" size="16" name="ul" /><br />
  45. Numer domu: <input maxlength="4" size="2" name="nr1" /><br />
  46. Numer mieszkania: <input maxlength="3" size="1" name="nr2" /><br /><br />
  47. Telefon kontaktowy: <input maxlength="16" size="10" name="tel" />
  48. <div id="subheader">Wymiary folii</div>Wymiary: <input maxlength="3" size="2" name="x1" />x<input maxlength="3" size="2" name="x2" />
  49. <div id="subheader">Wysyłka<br /></div>
  50. <input name="wys" value="pobr" type="radio" />Kurier "OPEK" za pobraniem<br />
  51. <input name="wys" value="prze" type="radio" />Kurier "OPEK" przelew (przedpłata)<br />
  52. <input name="wys" value="osob" type="radio" />Odbiór osobisty
  53. <div id="info">Składając zamówienie oświadczają Państwo że zapoznali się z
  54. <a class="tex" href="regulamin.html">regulaminem</a>
  55. i akceptują jego warunki.<br /><input value="Zamów" type="submit" /> <input value="Wyczyść" type="reset" />
  56. </div></form>
  57. <?php
  58. }
  59. ?>


Chcę aby przed jego wysłaniem został on dokładnie sprawdzony pod względem poprawności tj. minimalna ilość znaków, czy są cyfry bądź litery lub inne znaki. Jeżeli formularz jest poprawnie wypełniony powinna pojawiać się stosowna informacja np. dane które podał klient i to czy potwierdza ich wysłanie bądź anuluje, jeśli natomiast są błędy powinno wyświetlić się okienko że wystąpił błąd. Chciałbym aby okienko było takie jak to przy użyciu onsubmit="alert()" aby nie kasować tego co wpisał klient.
Oczywiście zależy mi na wykożystaniu php a nie js.

Każda najmniejsza pomoc bardzo mile widziana (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował nergla 10.05.2009, 17:38:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Niestety - nie wolno robić kontroli danych wyłącznie po stronie klienta, chyba że lubisz kłopoty. Wyłącznie po stronie serwera może być, tu i tu też może, ale wyłącznie po stronie klienta - nigdy.

Funkcjonalność, o jakiej piszesz, oferują rozmaite systemy obsługi/budowania formularzy, które automatycznie wykonują odpowiednie operacje dla każdego pola na podstawie określonych przez programistę reguł. Znajdziesz je w każdym poważniejszym frameworku. Oczywiście ręcznie też można coś takiego pisać, lecz ilość pracy w stosunku do efektów jest zbyt duża. Nie wiem, na jakim poziomie stoisz z PHP, by Ci coś konkretnego dokładniej polecić.

PS. Od sprawdzania poprawności adresu e-mail to jest funkcja filter_var() z flagą FILTER_VALIDATE_EMAIL:

  1. <?php
  2. if(filter_var($email, FILTER_VALIDATE_EMAIL))
  3. {
  4.  echo 'OK';
  5. }
  6. ?>
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: 14.10.2025 - 12:34