W dzisiejszym poradniku zajmiemy się niby prostym, ale bardzo praktycznym zagadnieniem. Sprawdzimy, czy e-mail podawany przez użytkownika jest poprawny.
Konieczność sprawdzenia danych wprowadzanych przez użytkowników jest bardzo ważna. Skrypt ten jest szczególnie przydatny przy różnego rodzaju rejestracjach.
Popatrz na poniższy kod PHP:
<?php //skrypt pobrany z konkretny.pl $email = "test@example.com"; //testowany e-mail $szablon = '/^[a-zA-Z0-9\.\-_]+\@[a-zA-Z0-9\.\-_]+\.[a-z]{2,6}$/D'; //wyrażenie regularne, na podstawie którego testowany jest e-mail $wyniksprawdzenia = preg_match($szablon,$email); //funkcja, która odpowiada za testowanie danych na podstawie szablonu if($wyniksprawdzenia) //sprawdzamy { echo 'Mail jest poprawny'; } else { echo 'Mail jest niepoprawny'; } ?>
W linii 4 przypisujemy do zmiennej $email wartość w postaci testowanego adresu e-mail. Możecie wpisać tutaj co chcecie by sprawdzić czy skrypt poprawnie interpretuje wprowadzony e-mail.
W linii 5 budujemy szablon, na podstawie którego funkcja preg_match będzie sprawdzać poprawność wprowadzonych danych. Nie przejmuj się, jeśli masz problem ze zrozumieniem „krzaków” tam wypisanych, wielu ma z tym problem. Postaram się jednak na chłopski rozum wyjaśnić za co odpowiadają dane krzaki:
W linii 6 podstawiamy nasze dane do naszego „sprawdzacza”. Nasza zmienna $wyniksprawdzenia przyjmuje teraz wartość prawdziwą 1 lub fałszywą 0. Od ostatecznego potwierdzenia czy sprawdzany e-mail jest prawdziwy czy fałszywy odpowiada nasz if w linii 8.
Jak widzicie, nasza prosta funkcja sprawdza czy wpisany e-mail jest poprawny. Nie jest ona jednak doskonała. Jeśli kiedyś powstaną końcówki domen, które mają więcej niż 6 znaków skrypt w tym momencie uzna, że e-mail nie jest prawdziwy. Warto samemu poeksperymentować.
Od jakiegoś czasu można to zrobić jeszcze prościej dzięki wbudowanej w PHP funkcji filter_var. Poniżej przykład:
<?php $email = "test@example.com"; //testowany e-mail if (filter_var($email, FILTER_VALIDATE_EMAIL)) { echo "Ten e-mail jest poprawny"; } else{ echo "Ten e-mail jest niepoprawny"; } ?>
Ten sposób prostszy, prawda? Sam go używam. Podałem jednak 2, ponieważ warto wiedzieć cokolwiek na temat wyrażeń regularnych. Powodzenia! 🙂