Podsumowanie czwartego rozdziału

Coś jest niejasne? Wejdź na Forum PHP i uzyskaj pomoc

Podsumowanie czwartego rozdziału

Przyszedł czas na podsumowanie nabytej wiedzy z zakresu liczb losowych, łączenia i dzielenia ciągów oraz wyrażeń regularnych. Przygotowałem kilka zadań, które pomogą Ci w realizacji tego celu.

Napiszemy obsługę formularza kontaktowego, który sprawdzi poprawność wpisywanych danych. Tego typu formularze można znaleźć w większości stron. Aby uniknąć niechcianego spamu, musimy nauczyć się poprawnie je obsłużyć i oddzielić wartościowe wiadomości od śmieci. Formularz będzie się składał z imienia, numeru telefonu, adresu e-mail oraz treści wiadomości.

Najpierw plik kontakt.html, który wyświetli formularz kontaktowy:

 
<html>
<head>
   <title>Formularz kontaktowy</title>
</head>
<body>
   <form action="sprawdz.php" method="post" >
      Imię: <input type="text" name="imie" /><br/>
      Telefon: <input type="text" name="telefon" /><br/>
      E-mail: <input type="text" name="email" /><br/>
      Treść wiadomości:<br/>
      <textarea name="tresc">TUTAJ WPISZ TREŚĆ</textarea>
      <input type="submit" value="OK" /><br/>
   </form>
</body>
</html>

Nie dzieje się tutaj nic nadzwyczajnego. Zwykły formularz wysyłający dane dalej. Teraz kolej na plik sprawdz.php:

<?php

function sprawdz_email($email)
{
   $spr = '/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/';
   if(preg_match($spr, $email))
      return true;
   else
      return false;
}

function sprawdz_imie($imie)
{
  $sprawdz = '/^[a-zA-ZŁŚĆŹŻĄĘÓŃąęółśżźćń]+$/';
   if(preg_match($sprawdz, $imie))
   {
      $imie = ucwords(strtolower($imie));
      return $imie;
   }    
   else
      return false;
}

function sprawdz_telefon($telefon)
{
   $sprawdz = '/^[0-9]{9}$/';
   if(preg_match($sprawdz, $telefon))
      return true;
   else
      return false;
}

function sprawdz_tresc($tresc)
{
   $tresc = trim($tresc);
   if(strlen($tresc) < 30)
      return false;
   else
      return $tresc;
}

$email = $_POST['email'];
$imie = $_POST['imie'];
$tel = $_POST['telefon'];
$tresc = $_POST['tresc'];
$blad_danych = false;

if (!sprawdz_email($email))
   {
      echo "Adres e-mail niepoprawny
"; $blad_danych = true; } $imie = sprawdz_imie($imie); if (!$imie) { echo "Imię wpisano niepoprawnie
"; $blad_danych = true; } if (!sprawdz_telefon($tel)) { echo "Błędny format telefonu
"; $blad_danych = true; } $tresc = sprawdz_tresc($tresc); if (!$tresc) { echo "Niepoprawna treść
"; $blad_danych = true; } if ($blad_danych) { echo "Wystąpił jeden lub więcej błędów podczas"; echo "przetwarzania danych.
"; } else { echo "Imię klienta: $imie;
"; echo "Adres e-mail: $email;
"; echo "Numer telefonu: $tel;
"; echo "Treść: $tresc;
"; } ?>

Przegląd rozwiązania

Przeanalizujmy wspólnie rozwiązanie tego przykładowego problemu. Każda funkcja sprawdza oddzielną daną, która jest przesyłana z formularza. W przypadku telefonu oraz e-maila zwraca true, jeżeli jest poprawny, lub false, jeżeli nie jest. Funkcje sprawdzające imię oraz treść zawierają wewnętrzną korekcję danych.

Imię zamienia najpierw wszystkie znaki na małe litery, by później powiększyć jedynie pierwszy znak. Treść natomiast usuwa wszystkie białe znaki z początku i końca tekstu, po czym sprawdza długość ciągu. Obie zwracają poprawionego stringa, jeżeli był prawidłowy, lub false, jeżeli nie był. Po definicjach funkcji następuje przypisanie zmiennych formularza do nowych, krótkich nazw.

Wprowadzamy zmienną pomocniczą, nazwaną $blad_danych. Domyślnie jest jej przypisana wartość false. W przypadku, gdy choć jedna z wysyłanych danych jest niepoprawna, zmienna przyjmuje wartość true. Jeżeli na końcu jej wartość wynosi true, wyświetlany jest komunikat o błędzie. Jeśli jednak nie wystąpił żaden błąd, na ekranie wyświetlane są informacje o wysyłanych danych.

Propozycje dalszych ćwiczeń

Proponuję spróbować rozwiązać następujące zadania:

  • Dopisz funkcję sprawdz_domene(), która sprawdzi, w jakiej domenie znajduje się podawany adres e-mail. Zastosuj funkcję explode, by rozdzielić adres względem znaku @.
  • Dopisz sprawdzanie treści, szukając wulgaryzmów i wyświetlając odpowiednie komunikaty.
  • Połącz przesłane dane w jeden ciąg. Możesz najpierw stworzyć tablice danych, a następnie połączyć je funkcją implode.

Na tym kończymy rozdział czwarty. Kolejny zadedykowany jest strukturze plików w PHP. Poznasz zasady tworzenia, odczytywania, kopiowania plików, a także kilka bardzo przydatnych funkcji związanych z plikami i katalogami. Nauczymy się również wysyłać wiadomości e-mail z poziomu PHP. Zapraszam!

Spis lekcji w rozdziale czwartym

Poprzednia lekcja: Sprawdzanie poprawności adresu e-mail Następna lekcja: Rozdział piąty