Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: walidacja email
Forum PHP.pl > Forum > PHP
kicaj
Uzylem filtrow do sprawdzania swoich formularzy i natknalem sie na pewien "problem".
Otoz, jezeli mamy formularz z polem email i chcemy sprawdzic jego poprawnosc to skorzystamy z FILTER_VALIDATE_EMAIL, jednak co wtedy gdy pole email jest, ale nie jest wymagane?

Napisalem kod na wlasnie taka okazje uzywajac filtrow, jednak nie jest on to konca taki jak bym chcial osiagnac

  1. <?php
  2. function checkEmailWhenIsNotRequired( $sMail )
  3. {
  4. if( empty( $sMail ) )
  5. {
  6. return 'email nie jest zawsze wymagany';
  7. // return true/$sMail;
  8. }
  9. elseif( filter_var( $sMail, FILTER_VALIDATE_EMAIL ) === false )
  10. {
  11. return 'jak juz wpisales mail, to jest on niepoprawny';
  12. }
  13. else
  14. {
  15. return $sMail;
  16. }
  17. }
  18.  
  19. $sEmail = 'k@p.pl';
  20.  
  21. echo '<hr />';
  22. var_export( filter_var( $sEmail, FILTER_CALLBACK, array( 'options' => 'checkEmailWhenIsNotRequired' ) ) );
  23. echo '<hr />';
  24. var_export( filter_var( $sEmail, FILTER_VALIDATE_EMAIL ) );
  25. ?>


Czy jest moze rozwiazanie typu takiego:
  1. <?php
  2. var_export( filter_var( $sEmail, FILTER_VALIDATE_EMAIL_IF_IS_NO_EMPTY ) );
  3. ?>

Kombinowalem za pomoca 'flags' i 'options' ale nie daje wyniku.
Poprostu chce pozbyc sie stworzonej funkcji
starach
  1. <?php
  2. elseif(!empty($sMail) && filter_var( $sMail, FILTER_VALIDATE_EMAIL ) === false )
  3. {
  4. return 'jak juz wpisales mail, to jest on niepoprawny';
  5. }
  6. ?>
Nie jestem pewien czy dobrze zrozumiałem, ale jeśli chcesz sprawdzać email tylko jeśli nie jest pusty to powyższe jest ok.
Jeśli zmienna $sMail będzie pusta to drugi warunek nie będzie sprawdzany.
kicaj
Chcialbym osiagnac to w taki sposob:
  1. <?php
  2. $mFilter = filter_var( $sMail, FILTER_VALIDATE_EMAIL );
  3.  
  4. if( $mFilter === false )
  5. {
  6. echo 'Mail jest niepoprawny';
  7. }
  8. else
  9. {
  10. // zwraca ok dla pustego pola lub poprawnego emaila
  11. echo "ok";
  12. }
  13. ?>

Problem polega na tym ze bedzie zwraca FALSE dla wartosci '' (pustych) i niepoprawny email, a ja chce zeby zwracalo FALSE zawsze gdy NIE JEST pusty i niepoprawny... Uzywajac tylko filtrow!

smile.gif
swiru_
ja zrobil bym tak:

  1.  
  2. $mFilter = filter_var( $sMail, FILTER_VALIDATE_EMAIL );
  3.  
  4. if (!isset($_POST['sMail']))
  5. {
  6. echo 'Spoko mozesz nie podawac @';
  7. {
  8. elseif ( $mFilter === false )
  9. {
  10. echo 'Podales niepoprawny adres @';
  11. }
  12.  
  13.  
  14.  


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.