Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]jak zrobić żeby było trzeba obowiązkowo wypełnić, jak zrobić żeby było trzeba obowiązkowo wypełnić
pawlo20
post
Post #1





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 31.08.2012

Ostrzeżenie: (40%)
XX---


jak w tym skrypcie komentarzy zrobić żeby było trzeba obowiązkowo wypełnić wszystkie pola i żeby była obowiązkowa liczba liter min.3 ?
bo ja próbowałem tam wstawić taką funkcje ale każdy skrypt inny i nie wiem w które miejsce, a wy się tak dobrze znacie to na wass to pestka. Podam ten skrypt bo w 2 to tylko pola .

  1. <?php
  2. $nick = $_POST['nick'];
  3. $mail = $_POST['mail'];
  4. $date=date('H:i d.m.Y');
  5. $pole = $_POST['pole'];
  6. $nick = HTMLSpecialChars($nick);
  7. $mail = HTMLSpecialChars($mail);
  8. $pole = HTMLSpecialChars($pole);
  9. $tresc = wordwrap($pole, 50, "\n", 1);
  10. $wynik = '<z>' . $nick . '</z> <c> <a href="mailto:' . $mail . '">' . $mail . '</a></c> <t>'.$date.'</t> <br><d>' . $tresc . '</d><br><br>';
  11. $plik = "komentarze.txt";
  12. $fp = fopen($plik, "a");
  13. fwrite ($fp, $wynik);
  14. fclose($fp);
  15. echo("Twój komentarz został wysłany! Aby zobaczyć komentarze <a href='index.php'>kliknij tutaj</a>");
  16.  
  17.  
  18. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Ociu
post
Post #2





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




  1. <?php
  2. $nick = $_POST['nick'];
  3. $mail = $_POST['mail'];
  4. $date=date('H:i d.m.Y');
  5. $pole = $_POST['pole'];
  6. $nick = HTMLSpecialChars($nick);
  7. $mail = HTMLSpecialChars($mail);
  8. $pole = HTMLSpecialChars($pole);
  9. if(strlen($pole) > 3) {
  10. $tresc = wordwrap($pole, 50, "\n", 1);
  11. $wynik = '<z>' . $nick . '</z> <c> <a href="mailto:' . $mail . '">' . $mail . '</a></c> <t>'.$date.'</t> <br><d>' . $tresc . '</d><br><br>';
  12. $plik = "komentarze.txt";
  13. $fp = fopen($plik, "a");
  14. fwrite ($fp, $wynik);
  15. fclose($fp);
  16. echo("Twój komentarz został wysłany! Aby zobaczyć komentarze <a href='index.php'>kliknij tutaj</a>");
  17. }else{
  18. echo("Twój komentarz nie został wysłany!");
  19. }
  20. ?>
Go to the top of the page
+Quote Post
dyziak
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 28.11.2010

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


Najlepiej wyprowadzić walidacje poza obszar formularza w php - ajax - i tam (w osobnym pliku) php-em zwalidowac a nastepnie wyslać : -) Polecam jquery ajax lub skrócona wersja post. Poczytaj i zobaczysz - spodoba Ci sie :- ) W osobnym pliku zrob to co Ci kolega napisał i bedzie smigac jak wielkie oceaniczne śledzie :-)
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ja bym postulował napisanie klasy walidacji. ógłbyś przepisywać powoli kod na obiektówkę, ale jeśli chcesz się dalej trzymać strukturalnego to nie widze problemu. Mogło by być coś w stylu:
- zmienna odpowiadająca za powodzenie walidacji,
- tablica pól z przypisanymi warunkami walidacji,
- ewentualnie tablica z wiadomościami walidatora.
Przykład podam w postaci malutkiej klasy, której pozbawię części funkcjonalności, żebyś za łatwo nie miał wink.gif
  1. class Validator {
  2. protected $valid;
  3. protected $rules;
  4. protected $messages;
  5. protected $errors;
  6.  
  7. public function __construct() {
  8. $this->valid = TRUE;
  9. $this->rules = array();
  10. $this->messages = array();
  11. $this->errors = array();
  12. }
  13.  
  14. public function isValid() {
  15. return $this->valid;
  16. }
  17.  
  18. public function add_constraint($field_name, $constraint, $additional_parameters = array(), $optional_message = '' ) {
  19. $this->rules[$field_name][$constraint] = $additional_parameters;
  20. $this->messages[$field_name][$constraint] = $optional_message;
  21. return $this;
  22. }
  23.  
  24. public function remove_constraint($field_name = NULL, $constraint = NULL) {
  25. foreach($this->rules AS $field => $rules) {
  26. if(NULL === $constraint) {
  27. if(NULL === $field_name) {
  28. $this->rules = array(); //kasuje wszystkie reguły we wszystkich polach
  29. } else {
  30. if( in_array($field_name, $this->rules) ) {
  31. $this->rules[$field_name] = array(); // kasuj wszystkie reguły pola;
  32. } //jako else możesz rzucić wyjątek o nie istnieniu danego pola
  33. }
  34. } else {
  35. if(NULL === $field_name) {
  36. foreach($this->rules AS $field => $rules) {
  37. if( array_key_exists($constraint, $rules) ) {
  38. unset( $this->rules[$field][$constraint] ); // kasuje regułę we wszystkich polach
  39. }
  40. }
  41. } else {
  42. // kasuj regułę w określonym polu, ale ten warunek zostawiam Tobie już jesli Ci pasuje podejście
  43. }
  44. }
  45. }
  46. return $this;
  47. }
  48.  
  49. public function validate($form_fields_array = array() ) {
  50. foreach($form_fields_array AS $field => $value) {
  51. if( in_array($field, $this->rules) ) {
  52. foreach($this->rules[$field] AS $key => $params) {
  53. $return = call_user_func($this->$key, $value, extract($params) ); // tu sobie pozabezpieczać trzeba
  54. if(FALSE === $return) {
  55. $this->valid = FALSE;
  56. $this->errors[$field][] = $this->messages[$field][$key];
  57. }
  58. }
  59. }
  60. }
  61. return $this;
  62. }
  63. // przykładowa funkcja sprawdzająca czy wymagane pole jest niepuste
  64. protected function required($value) {
  65. return empty($value) ? FALSE : TRUE;
  66. }
  67. }

Tu można naprawdę dużo pokombinować i to bardziej to szkic. Można przykładowo obiekt formularza przekazać do konstruktora już na starcie, co nam ładnie strukturkę stworzy, można mieć jakiś pakiet reguł standardowych wraz z ich komunikatami błędów, można pomyslec o możliwości podawania nie tylko reguł klasy Validator, ale także user defined czy wbudowanych PHP.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
pawlo20
post
Post #5





Grupa: Zarejestrowani
Postów: 112
Pomógł: 0
Dołączył: 31.08.2012

Ostrzeżenie: (40%)
XX---


użytkownik Ociu dobrze pomógł . od razu działa dzięki
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 01:45