Formularz wyjściowy danych html php. Najprostsza forma przesyłania danych na pocztę przy użyciu HTML i PHP

Aby zorganizować przesyłanie danych na serwer za pomocą formularza, należy zaimplementować formularz HTML, w którym odwiedzający stronę wprowadzą swoje dane i kod PHP, którego celem jest przyjęcie i przetworzenie otrzymanych danych na serwerze.

Formularz zgłoszenia w formacie HTML

Formularz na stronie jest tworzony przez tagi

...
, wewnątrz których umieszczone są znaczniki pól służące do wprowadzania informacji tekstowych, znaczniki elementów specjalnych (np. pola kombi), znaczniki pola wyboru oraz wczytywania plików.

* W przypadku HTML5 możliwe jest również umieszczanie znaczników pól formularza nie wewnątrz znaczników formularza, ale w dowolnym miejscu na stronie. Jednocześnie dla każdego takiego pola należy określić atrybut „formularz” w celu określenia, z jaką formą zgłoszenia ma wchodzić w interakcję.

Tak więc najprostsze przesłanie formularza może zawierać następujący kod:


Wartość:
Wartość B.:

Elementy formularza i ich parametry:

akcja="mójformularz.php"– atrybut „action” określa, który plik php będzie przetwarzał przesłane dane. W tym przykładzie dane zostaną przesłane do pliku „myform.php” znajdującego się w tym samym katalogu co strona formularza. Jeśli ten atrybut nie zostanie określony jawnie, dane formularza zostaną przesłane na adres strony samego formularza.

metoda = "post"– parametr method określa sposób przesyłania danych POST lub GET. Więcej na ten temat w artykule „Różnice między metodami POST i GET”. Jeśli nie określisz atrybutu jawnie, domyślnie zostanie użyta metoda GET.

Tekst „Wartość A:” I „Wartość B:” dodane wyłącznie w celu projektowania i zrozumiałości formularza dla użytkownika. Nie jest konieczne dodawanie tego do przesyłania danych, ale aby użytkownik zrozumiał, co wpisać, warto to określić.

tagi są używane do tworzenia różnych kontrolek formularzy.

typ="tekst"– atrybut „type” określa typ pola. W zależności od tego, jaki typ jest określony, wygląd pierwiastek i jego przeznaczenie. Wartość atrybutu „text” określa, że ​​element będzie wyświetlany w przeglądarce jako jednowierszowe pole tekstowe, w którym użytkownik może wpisać swój ciąg znaków.

nazwa="dane1"– atrybut „name” wskazuje nazwę, a raczej indeks danych w tablicy odebranych przez serwer. Jest to wymagany parametr, dzięki któremu w module obsługi php będzie można następnie uzyskać dostęp do przekazanej wartości. Nazwę można wybrać dowolnie, jednak wygodniej jest, gdy ta wartość ma jakieś jasne znaczenie.

typ="wyślij"- znacznik z tą wartością parametru "type" wyświetli się na stronie jako przycisk. W rzeczywistości możesz obejść się bez przycisku na formularzu. Jeśli na przykład w formularzu znajdują się pola tekstowe, to wysyłanie można wykonać, naciskając po prostu „Enter” na klawiaturze. Ale posiadanie przycisku czyni formularz bardziej przejrzystym.

value="Prześlij" !}– w tym przypadku (for type="submit") definiuje tylko podpis na przycisku. Na przykład dla type="text" będzie to tekst, który będzie wyświetlany w polu tekstowym.

W rezultacie na stronie ten kod będzie wyglądał mniej więcej tak:

Klikając w przycisk dane zostaną przesłane na wskazaną stronę, a jeśli taka istnieje i działa poprawnie, dane zostaną przetworzone.

Przetwarzanie danych przesłanych z formularza HTML w PHP

Dane przesłane w opisany sposób umieszczane są w superglobalnych tablicach $_POST, $_GET i $_REQUEST. $_POST lub $_GET będzie zawierać dane w zależności od tego, która metoda została wysłana. $_REQUEST zawiera przesłane dane za pomocą dowolnej z określonych metod.

$_POST, $_GET i $_REQUEST to tablice asocjacyjne, których pola indeksu odpowiadają atrybutom „nazwa” znaczników . W związku z tym, aby pracować z danymi w pliku myform.php, możesz przypisać wartości elementów takiej tablicy do zmiennych, podając nazwę pola jako indeks:

// dla metody GET
$a = $_GET[ "dane1"];
$b = $_GET[ "dane2"];

// dla metody POST
$a = $_POST[ "dane1"];
$b = $_POST[ "dane2"];

// dowolną metodą
$a = $_WYMAGANIE[ "dane1"];
$b = $_WYMAGANIE[ "dane2"];

Sprawdzenie wypełnienia pól formularza

Czasami podczas odbierania danych trzeba sprawdzić, czy użytkownik nie przesłał pustego formularza. Możesz do tego użyć pustej funkcji.

if (puste ($_REQUEST["dane1" ])) (
Echo „Pole nie jest wypełnione”;
} w przeciwnym razie(
Echo „Pole zostało wypełnione”;
$a = $_WYMAGANIE[ "dane1"];
}

Zwykle to rozwiązanie jest wystarczające. Jeśli musisz wprowadzić tekst, będzie jasne, czy został wprowadzony, czy nie. Jeśli jednak użytkownik celowo wprowadzi zero do obliczeń, pusta funkcja pokaże, że nie ma żadnej wartości. Dlatego w takich sytuacjach lepiej jest użyć funkcji isset. Wyraźnie sprawdzi, czy wartość jest ustawiona, czy nie.

if (isset ($_REQUEST["dane1" ])) (
Echo „Pole zostało wypełnione”;
$a = $_WYMAGANIE[ "dane1"];
} w przeciwnym razie(
Echo „Pole nie jest wypełnione”;
}

Jednym z najczęstszych zadań w praktyce jest implementacja formularza zwrotnego. Tobish pisze swój kod HTML, stylizuje go w CSS, Tworzenie PHP skrypt, który przetworzyłby otrzymane od użytkownika dane i przesłałby je na naszą pocztę, napisanie skryptu JS, który sprawdzałby formularz pod kątem adekwatności wprowadzonych danych, zabezpieczenie naszego potomstwa przed spamem, aby nasza skrzynka pocztowa nie zawaliła się od ataków botów .

Wszystkie powyższe punkty zostaną uwzględnione w naszej recenzji i szczegółowo skomentowane.

Zacznijmy więc tworzyć formularz zwrotny:

HTML

Przede wszystkim piszemy kod HTML, który ustawia pola, które wypełni użytkownik. W przyszłości zostaną one opracowane. Kod formularza wygląda następująco:

< form method= "post" action= "mail.php" > < div class = "left" > < label for = "name" >Nazwa: < input maxlength= "30" type= "text" name= "name" /> < label for = "phone" >Telefon: < input maxlength= "30" type= "text" name= "phone" /> < label for = "mail" >E-mail: < input maxlength= "30" type= "text" name= "mail" /> < div class = "right" > < label for = "message" >Wiadomość: < textarea rows= "7" cols= "50" name= "message" > < input type= "submit" value= "Wysłać" />

A wizualnie wygląda to teraz tak:

Zgadzam się, na razie wszystko jest brzydkie i nic nie jest jasne, ale dopiero zaczęliśmy.

Rozważ szczegółowo powyższy kod:

  • < form method= "post" action= "mail.php" > …


    Aby utworzyć formularz, musisz użyć znacznika formularza. To on określa początek i koniec formularza dla interpretera kodu. Jak każdy tag posiada cały zestaw atrybutów, jednak do działania formularza wymagane są tylko dwa, są to metoda (sposób wysłania zapytania do serwera, post jest standardowo używany do formularzy) oraz akcja (wskazuje ścieżka do pliku obsługi formularza, a mianowicie w tym pliku będzie zawierał skrypt PHP, który następnie prześle nam wartości wprowadzone przez użytkownika pocztą, w naszym przypadku widzimy, że ten plik nazywa się mail.php i to znajduje się w tym samym katalogu witryny, co strona, którą rozważamy).
  • < input maxlength= "30" type= "text" name= "name" />


    Dalej mamy wejścia. Są to właściwie same pola formularza, w które użytkownicy wprowadzą potrzebne nam informacje (type = "text" wskazuje, że będzie to tekst). Atrybut maxlength określa, ile znaków użytkownik może wprowadzić w danym polu formularza. Najważniejszym atrybutem jest name - określa nazwę konkretnego pola. To pod tymi nazwami skrypt PHP będzie dalej przetwarzał informacje, które do niego docierają. W razie potrzeby można również ustawić atrybut zastępczy, który wyświetla tekst wewnątrz pola, które znika po umieszczeniu w nim kursora. Jednym z problemów związanych z symbolem zastępczym jest to, że nie jest on obsługiwany przez niektóre starsze przeglądarki.
  • < label for = "name" >Nazwa:


    Używane, jeśli porzuciliśmy symbole zastępcze. Zwykła etykieta pola, atrybut for mówi, do którego pola odnosi się dana etykieta. Wartość wskazuje nazwę interesującego nas pola.
  • < textarea rows= "7" cols= "50" name= "message" >


    Podobnie jak wejście służy do wprowadzania informacji przez użytkownika, tylko tym razem pole jest wyostrzone dla długich wiadomości. Wiersze określają rozmiar pola w wierszach, kolumny w znakach. Ogólnie ustalają wysokość i szerokość naszego pola.
  • < input type= "submit" value= "Wysłać" />


    Type="submit" mówi nam, że jest to przycisk do wysłania formularza, a wartość określa tekst, który znajdzie się wewnątrz tego przycisku.
  • < div class = "right" >


    wykorzystywane wyłącznie do dalszego projektowania wizualnego formularza.

css

Aby nasz formularz opinii wyglądał reprezentacyjnie, musi być zaprojektowany. Aby uzyskać następujący wynik:

Użyliśmy tego kodu:

formularz (tło: #f4f5f7; dopełnienie: 20px;) formularz. lewo, formularz. right ( display: inline-block; vertical-align: top; width: 458px; ) formularz . prawy ( dopełnienie - lewy: 20px; ) etykieta (wyświetl: blok; rozmiar czcionki: 18px; wyrównanie tekstu: środek; margines: 10px 0px 0px 0px; ) wejście, obszar tekstowy (obramowanie: 1px pełny #82858D; dopełnienie: 10px; rozmiar czcionki: 16px; szerokość: 436px; ) obszar tekstowy (wysokość: 98px; margines na dole: 32px; ) input[type= "submit" ] (szerokość: 200px; float: right; border: none; background: #595B5F; kolor: #fff; transformacja tekstu: wielkie litery; )

Nie widzę sensu szczegółowego opisywania CSS, zwrócę tylko uwagę na kluczowe punkty:

  1. Nie jest konieczne pisanie projektu dla każdego znacznika w formularzu. Spróbuj zbudować selektory w taki sposób, aby można było stylizować wszystkie potrzebne elementy w kilku liniach kodu.
  2. Nie używaj dodatkowych znaczników według typu do łamania wierszy i tworzenia wcięć < br>, < p> i tak dalej, zadania te są doskonale obsługiwane przez CSS z wyświetlaniem właściwości: blok i margines z dopełnieniem. Więcej o tym, dlaczego nie powinieneś używać < br> w układzie ogólnie można przeczytać tag br w artykule, ale czy naprawdę jest potrzebny? .
  3. Nie używaj układu tabelarycznego dla formularzy. Jest to sprzeczne z semantyką tego tagu, a wyszukiwarki uwielbiają kod semantyczny. Aby uformować wizualną strukturę dokumentu wystarczą nam znaczniki div oraz ustawione w CSS właściwości display: inline-block (ustawia bloki w rzędzie) i vertical-align: top (zapobiega ich rozprzestrzenianiu się po ekranie ), ustawiamy im wymaganą wysokość i voila, nic zbędnego i wszystko układa się tak, jak potrzebujemy.

Dla tych, którzy chcą zaoszczędzić czas na projektowaniu witryn, mogę doradzić korzystanie z frameworków CSS podczas tworzenia witryn, zwłaszcza tych napisanych samodzielnie. Moim wyborem w tym zakresie jest Twitter Bootstrap. Można obejrzeć lekcję dotyczącą projektowania formularzy z jego użyciem.

PHP

Cóż, nadszedł czas, aby nasz formularz działał.

Przechodzimy do naszego katalogu głównego serwisu i tam tworzymy plik mail.php, do którego wcześniej podaliśmy ścieżkę w atrybucie action znacznika formularza.

Ostatecznie jego kod będzie wyglądał następująco:

Twoja wiadomość została wysłana poprawnie \" javascript: history.back()\" >Wróć

" ; if (! puste ($_POST [ "nazwa" ] ) i ! puste ($_POST [ "telefon" ] ) i ! puste ($_POST [ "mail" ] ) i ! puste ($_POST [ "wiadomość" ] ) ) ( $nazwa = trim (strip_tags ($_POST ["nazwa" ] ) )); $phone = trim (strip_tags ($_POST ["telefon" ])); $mail = trim (strip_tags ($_POST ["mail"] ) ); $message = trim (strip_tags ($_POST ["wiadomość"])); mail (, , "Wysłano do Ciebie: " . $nazwa . "
Jego numer: „ . $phone ”.
Jego poczta: " . $mail . "
Jego wiadomość: „
. $wiadomość, ); Echo "Twoja wiadomość została wysłana poprawnie!
Wkrótce otrzymasz odpowiedź
$z powrotem"
; Wyjście; ) else (echo; wyjdź;) ?>

Możesz pominąć omówienie części HTML i CSS tego dokumentu. Zasadniczo jest to zwykła strona witryny, którą możesz zaprojektować tak, jak chcesz i potrzebujesz. Rozważmy jego najważniejszą część - skrypt PHP do przetwarzania formularza:

$back = "

\" javascript: history.back()\" >Wróć

" ;

Za pomocą tej linii tworzymy łącze umożliwiające powrót do poprzedniej strony. Ponieważ nie wiemy z góry, z której strony użytkownik trafi na tę, odbywa się to za pomocą małej funkcji JS. W przyszłości będziemy po prostu odwoływać się do tej zmiennej, aby wyświetlić ją w potrzebnych nam miejscach.

if (! puste ($_POST [ "nazwa" ] ) i ! puste ($_POST [ "telefon" ] ) i ! puste ($_POST [ "mail" ] ) i ! puste ($_POST [ "wiadomość" ] ) ) ( // wewnętrzna część procedury obsługi) inaczej ( echo "Wypełnij wszystkie pola, aby wysłać wiadomość! $back "; Wyjście; )

Tutaj zapinamy formularz sprawdzający kompletność pól. Jak się domyślacie, w części $_POST["nazwa"] zapisujemy w cudzysłowach wartość atrybutu name naszych danych wejściowych.

Jeżeli wszystkie pola są wypełnione, to skrypt rozpocznie przetwarzanie danych w swojej części wewnętrznej, jeżeli jednak choć jedno pole nie zostało wypełnione, to na ekranie użytkownika pojawi się komunikat z prośbą o wypełnienie wszystkich pól formularza echo "Aby wysłać wiadomość, wypełnij wszystkie pola! $back" oraz link do powrotu do poprzedniej strony, którą stworzyliśmy w pierwszej linii.

Następnie wklej go do wnętrza modułu obsługi formularza:

$name = trim (strip_tags ($_POST ["nazwa" ]) ); $phone = trim (strip_tags ($_POST ["telefon"])); $mail = trim (strip_tags ($_POST ["mail" ]) ); $message = trim (strip_tags ($_POST ["wiadomość"]));

W ten sposób usunęliśmy dane wprowadzone przez użytkownika z tagów HTML i dodatkowych spacji. Dzięki temu możemy chronić się przed otrzymywaniem złośliwego kodu w wysyłanych do nas wiadomościach.

Czeki mogą być skomplikowane, ale wybór należy do Ciebie. Ustawiliśmy już minimalną ochronę po stronie serwera. Resztę zrobimy po stronie klienta za pomocą JS.

Nie polecam całkowicie rezygnować z ochrony formularzy po stronie serwera na rzecz JS, bo choć zdarza się to niezwykle rzadko, zdarzają się unikatowe osoby z wyłączonym JS w przeglądarce.

Po wyczyszczeniu tagów dodaj wiadomość wysyłającą:

Poczta ( "[email protected]", „E-mail od your_site_address”, „Napisał ci:”. $nazwa . "
Jego numer: „ . $phone ”.
Jego poczta: " . $mail . "
Jego wiadomość: „
. $wiadomość , „Typ zawartości: tekst/html; zestaw znaków = windows-1251”) ;

To właśnie ta linia jest zaangażowana w tworzenie i wysyłanie wiadomości do nas. Wypełnia się go w następujący sposób:

  1. "[email protected]" - wstaw swoją pocztę między cudzysłowy
  2. „E-mail z adresu_twojej_witryny” to temat wiadomości, która zostanie wysłana na pocztę. Tutaj możesz napisać wszystko.
  3. „Napisał do ciebie: „.$imię”. < br /> Jego numer to: „.$phone”. < br /> Jego poczta: „.$poczta”. < br /> Jej wiadomość: „.$message – tworzymy sam tekst wiadomości. $name – wstawiamy informacje, które użytkownik uzupełnił poprzez dostęp do pól z poprzedniego kroku, w cudzysłowie opisujemy co oznacza to pole, z tagiem < br /> robimy podział linii, aby wiadomość jako całość była czytelna.
  4. Content-type:text/html;charset=windows-1251 - na końcu znajduje się jednoznaczne wskazanie typu danych przesyłanych w wiadomości oraz ich kodowania.

WAŻNY!

Kodowanie określone w „nagłówku” dokumentu ( < meta http- equiv= "Content-Type" content= "text/html; zestaw znaków=windows-1251" /> ), kodowanie z wiadomości Content-type:text/html;charset=windows-1251 i ogólnie kodowanie pliku PHP musi być zgodne, w przeciwnym razie w wiadomościach otrzymanych pocztą, zamiast rosyjskich lub angielskich liter, „szalone słowa " zostanie wyświetlone.

Wiele osób nie podaje wprost kodowania wysyłanej wiadomości, ale może to w przyszłości powodować problemy w niektórych klientach pocztowych (nieczytelne listy docierają do poczty), dlatego mimo wszystko zalecam jego podanie.

Sprawdzenie formularza pod kątem adekwatności wprowadzonych danych

Aby użytkownicy niechcący nie przegapili pól i wypełnili wszystko poprawnie, warto sprawdzić dane wejściowe.

Można to zrobić zarówno w PHP po stronie serwera, jak i JS po stronie klienta. Ja korzystam z drugiej opcji, ponieważ w ten sposób osoba może od razu zorientować się, co zrobiła źle i poprawić błąd bez dodatkowych przesunięć stron.

Kod skryptu wstawiany jest do tego samego pliku, w którym znajduje się część HTML formularza. W naszym przypadku będzie to wyglądać następująco:

< script>function checkForm(form) ( var nazwa = forma. nazwa. wartość; var n = nazwa. match(/ ^[ A- Za- zA- Za-z] * [ A- Za- zA- Za-z] + $/ ); if (! n) ( alert( "Nazwa została wprowadzona nieprawidłowo, popraw błąd") ; zwróć fałsz ; ) var telefon = formularz. telefon. wartość; var p = telefon. dopasuj(/ ^[ 0 - 9 + ] [ 0 - 9 - ] * [ 0 - 9 - ] + $/ ); if (! p) ( alert ( „Telefon wprowadzony nieprawidłowo”) ; zwróć fałsz ; ) var poczta = formularz. Poczta. wartość; var m = poczta . match(/ ^[ A- Za- z0- 9 ] [ A- Za- z0- 9 \. _- ] * [ A- Za- z0- 9 _] *@ ([ A- Za- z0- 9 ] + ([ A- Za- z0- 9 - ] * [ A- Za- z0- 9 ] + ) * \. ) + [ A- Za- z] + $/ ) ; if (! m) ( alert( "Wprowadzony adres e-mail jest nieprawidłowy, popraw błąd") ; zwróć fałsz ; ) zwróć prawdę ; )

Cóż, teraz zwykła analiza:

Za to, tak, że kiedy klikniesz przycisk wysyłania formularza, mamy go zweryfikowany zawieszamy uruchomienie naszego skryptu na tagu formularza:

< form method= "post" action= "mail.php" onSubmit= "return checkForm(this)" >

Teraz punkt po punkcie bierzemy skład czeku:


Jak widać taki mini czek jest wypisany dla każdego z naszych pól. Zaznaczyłem jedno pole na zrzucie ekranu czerwonym kwadratem, dla innych pól ma podobną strukturę, a jeśli chcesz dodać pole lub je usunąć, możesz to teraz łatwo zrobić.

Witryny interaktywne przyjmują dane wejściowe od użytkowników. Jednym z powszechnych sposobów otrzymywania danych wejściowych są formularze.

W tym samouczku zobaczymy, jak utworzyć formularz i przetworzyć dane wejściowe na serwerze.

Podczas tworzenia formularza zaangażowane są dwa ważne atrybuty: działanie I metoda.

działanie Służy do wprowadzania adresu URL, pod którym przesyłany jest formularz. Może to być plik PHP obsługujący dane wejściowe. metoda Może to być „post” lub „get”, które są różnymi metodami przekazywania danych. Na razie nie musisz zagłębiać się w różnice między tymi metodami; metoda „get” wysyła dane za pośrednictwem adresu URL, a metoda „post” wysyła je jako blok danych za pośrednictwem standardowej usługi wprowadzania danych (STDIN). W ostatnim samouczku, który przeszliśmy, widzieliśmy, jak dane są pobierane za pośrednictwem adresu URL przy użyciu $_GET . W tym samouczku przyjrzymy się, w jaki sposób odbierane są dane przesyłane metodą „post”.

Strona HTML z formularzem

Strona formularza nie musi być plikiem PHP (ale może). Nie musi nawet znajdować się w tej samej witrynie, co plik, który odbiera dane.

W naszym pierwszym przykładzie przyjrzymy się bardzo prostemu formularzowi z jednym polem tekstowym:

Formularz

Wpisz swoje imię

W przeglądarce wyświetli się następujący formularz:

Teraz przychodzi zabawna część: pobieranie i przetwarzanie danych za pomocą PHP.

Żądanie danych formularza za pomocą PHP

Jeśli chcesz zażądać danych przesłanych za pomocą formularza (przy użyciu formatu post), używasz $_POST :

$_POST["nazwa pola"];

która zwróci wartość pola formularza. Spróbujmy to zrobić na przykładzie.

Najpierw utwórzmy stronę z formularzem, tak jak poprzednio. Następnie utworzymy stronę PHP (handler) „handler.php” (zwróć uwagę, że jest to nazwa strony, którą zapisaliśmy w atrybucie działanie w naszym

).

Plik „handler.php” będzie zawierał:

Formularz Echo "

"; ?>

Dane wejściowe użytkownika i warunki

W poniższym przykładzie spróbujemy użyć danych wprowadzonych przez użytkownika do stworzenia warunków. Najpierw potrzebujemy formularza:

Formularz

Jak masz na imię:

Twój ulubiony kolor: Czerwony Zielony Niebieski

W przeglądarce będzie wyglądać tak:

Teraz używamy tych danych wejściowych do utworzenia strony, która automatycznie zmienia kolor tła na podstawie danych wprowadzonych przez użytkownika. Odbywa się to poprzez utworzenie warunku (patrz Lekcja ), który wykorzystuje dane wprowadzone przez użytkownika w formularzu.

$strHeading = "

Witaj, " . $_POST ["nazwa użytkownika"] . "

"; przełącz ($_POST["ulubiony kolor"]) ( przypadek „r”: przerwa; przypadek „g”; przerwa; przypadek „b”: przerwa; domyślnie: przerwa; ) ?> Formularz

Tło będzie białe, chyba że użytkownik określi preferowany kolor w formularzu. Osiąga się to poprzez ustawienie wartości domyślny(domyślnie), która jest stosowana, jeśli żaden z warunków nie jest spełniony.

Ale co się stanie, jeśli użytkownik nie poda swojego imienia? Wtedy tytuł będzie brzmiał tylko „Cześć”. Stwórzmy dodatkowy warunek, aby zmienić tę opcję.

$strUsername = $_POST["nazwa_użytkownika"]; if ($strNazwaUżytkownika != "") ( $strHeading = "

Witaj, " . $_POST ["nazwa użytkownika"] . "

"; ) w przeciwnym razie ( $strHeading = "

Witaj nieznajomy!

";
} przełącz ($_POST["ulubiony kolor"]) ( przypadek „r”: $strBackgroundColor = "rgb(255,0,0)"; przerwa; przypadek „g”; $strBackgroundColor = "rgb(0,255,0)"; przerwa; przypadek „b”: $strBackgroundColor = "rgb(0,0,255)"; przerwa; domyślny: $strBackgroundColor = "rgb(255,255,255)"; przerwa; ) ?> Formularz

W powyższym przykładzie używamy warunków dla czeki informacje od użytkownika. W tym przypadku nie jest tak ważne, jeśli użytkownik nie określi nazwy. Ale ponieważ Twój kod staje się coraz bardziej złożony, ważne jest, aby wziąć pod uwagę opcję, że użytkownik w ogóle nie wypełnia formularzy.

Przykład: formularz kontaktowy

Bazując na znajomości języka PHP i formularzy, możesz utworzyć formularz z informacjami kontaktowymi za pomocą funkcji poczty, która ma następującą składnię:

Poczta (gdzie, temat, wiadomość);

Najpierw utwórzmy prosty formularz HTML:

Formularz kontaktowy

Formularz kontaktowy

Temat:

Wiadomość:

Następnie potrzebujesz skryptu PHP do wysyłania danych wejściowych użytkownika:

Funkcje // Odbiorca (zmień na swój adres e-mail) $strEmail = " [e-mail chroniony]"; // Pobierz dane wejściowe użytkownika $strSubject = $_POST["temat"]; $strWiadomość = $_POST["wiadomość"]; mail($strEmail,$strSubject,$strWiadomość); echo "Poczta wysłana."; ?>

Pamiętaj, że przykład działa tylko wtedy, gdy masz dostęp do serwera pocztowego. Tak nie jest domyślnie w XAMPP i większości darmowych hostów. Tak więc niektóre hosty mogą wymagać nagłówka formularza, który jest wykonywany za pomocą dodatkowego parametru:

Poczta („[email protected]”, „Test”, „To jest wiadomość testowa”, „Od: [email protected]”);

Jedną z największych zalet PHP jest sposób, w jaki współpracuje z formularzami HTML. Kluczem tutaj jest to, że każdy element formularza jest automatycznie udostępniany programom PHP. Więcej informacji na temat korzystania z formularzy w PHP znajdziesz w rozdziale . Oto przykład formularza HTML:

Beispiel #1 Najprostsza forma HTML

Twoje imię:

Twój wiek:

Nie ma nic specjalnego w tej formie. Jest to normalny formularz HTML bez żadnych specjalnych znaczników. Gdy użytkownik wypełni formularz i kliknie przycisk przesyłania, zostanie wywołana strona action.php. Ten plik może zawierać coś takiego:

Beispiel #2 Renderowanie danych formularza

Cześć, .
Tobielata.

Przykładowe wyjście z tego programu:

Cześć Siergiej. Masz 30 lat.

Jeśli nie weźmiesz pod uwagę fragmentów kodu z htmlspecialchars() I (int), zasada działania tego kodu powinna być prosta i jasna. htmlspecialchars() zapewnia, że ​​„specjalne” znaki HTML są odpowiednio zakodowane, aby na stronie nie został wstawiony złośliwy kod HTML ani JavaScript. Pole wieku, o którym wiemy, że musi być liczbą, możemy po prostu przekonwertować liczba całkowita, który automatycznie pozbędzie się niechcianych znaków. PHP może to również zrobić automatycznie z rozszerzeniem filter. Zmienne $_POST["nazwa"] i $_POST["wiek"] są automatycznie ustawiane przez PHP. Wcześniej używaliśmy superglobalnego $_SERVER, ale tutaj również używamy superglobalnego $_POST, który zawiera wszystkie dane POST. Zauważ, że metoda wysyłania(metoda) naszego formularza to POST. Gdybyśmy zastosowali metodę DOSTAWAĆ, wówczas nasze informacje o formularzu byłyby w superglobalnym $_GET. Alternatywnie możesz użyć zmiennej $_REQUEST, jeśli źródło danych jest nieistotne. Ta zmienna zawiera kombinację danych GET, POST, COOKIE.

15 lat temu

Zgodnie ze specyfikacją HTTP, powinieneś używać metody POST, gdy używasz formularza do zmiany stanu czegoś po stronie serwera. Na przykład, jeśli strona ma formularz umożliwiający użytkownikom dodawanie własnych komentarzy, takich jak ten page tutaj, formularz powinien używać POST., dlatego te strony nie są oznaczane zakładkami ani buforowane.

Powinieneś użyć metody GET, gdy twój formularz pobiera coś z serwera i tak naprawdę niczego nie zmienia. Na przykład formularz wyszukiwarki powinien używać GET, ponieważ przeszukiwanie witryny sieci Web nie powinno zmieniać niczego, na czym klientowi może zależeć, a tworzenie zakładek lub buforowanie wyników zapytania wyszukiwarki jest tak samo przydatne jak tworzenie zakładek lub buforowanie statyczna strona HTML.

2 lata temu

Warto wyjaśnić:

POST nie jest bezpieczniejszy niż GET.

Powody wyboru GET vs POST obejmują różne czynniki, takie jak intencja żądania (czy „przesyłasz” informacje?), Rozmiar żądania (istnieją ograniczenia długości adresu URL, a parametry GET są wysyłane w URL) i jak łatwo chcesz udostępniać akcję – na przykład wyszukiwanie Google to GET, ponieważ ułatwia kopiowanie i udostępnianie wyszukiwanego hasła komuś innemu, po prostu udostępniając adres URL.

Bezpieczeństwo jest tutaj brane pod uwagę tylko ze względu na fakt, że GET jest łatwiejszy do udostępnienia niż POST. Przykład: nie chcesz, aby hasło zostało wysłane przez GET, ponieważ użytkownik może udostępnić wynikowy adres URL i nieumyślnie ujawnić swoje hasło.

Jednak GET i POST są równie łatwe do przechwycenia przez dobrze umiejscowioną złośliwą osobę, jeśli nie wdrożysz TLS/SSL w celu ochrony samego połączenia sieciowego.

Wszystkie formularze wysyłane przez HTTP (zwykle port 80) są niepewne, a dzisiaj (2017) nie ma wielu dobrych powodów, dla których publiczna strona internetowa nie powinna używać HTTPS (który jest w zasadzie HTTP + Transport Layer Security).

Jako bonus, jeśli korzystasz z TLS, minimalizujesz ryzyko, że Twoi użytkownicy otrzymają kod (AD) wstrzyknięty do Twojego ruchu, który nie został tam umieszczony przez Ciebie.

W jednym z poprzednich tematów rozważaliśmy już pobieranie danych z formularza. W tym temacie dokładniej wyjaśnię jak formularz jest poprawnie wysyłany na serwer, a także jak formularz jest przetwarzany w PHP.

Przesyłanie formularza

Pole wejściowe. Najczęstszymi elementami formularzy są różne pola wprowadzania. Są one tworzone za pomocą tagu wiele rodzajów i znaczników

wybierać. Z tagu i dla elementów listy, czyli dla tagów

Przycisk radiowy. Wszystkie przyciski opcji z tej samej grupy muszą mieć ten sam atrybut nazwy. Ta wartość nie tylko ustawia nazwę parametru, ale także grupuje przyciski opcji w grupę, z której można wybrać tylko jeden przycisk opcji. Atrybut value jest ustawiony inaczej. Dodajmy przyciski opcji do formularza:

Pole wyboru. W przeciwieństwie do przycisków radiowych, każde pole wyboru jest osobnym elementem formularza. Wszystkie pola wyboru są od siebie niezależne i każde wysyła swoje dane do serwera. Atrybut nazwy wszystkich pól wyboru musi być inny, a atrybut wartości może być taki sam lub inny. Jednak pole wyboru nie zawiera żadnych konkretnych danych. Można go wybrać lub nie. Dlatego nie ma sensu ustawiać go na długą wartość. Można go ustawić na wartość jednego znaku, na przykład 1. Na serwerze znaczenie tej wartości będzie następujące: jeśli jest wartość, to pole wyboru zostało zaznaczone, a jeśli nie ma wartości, to nie jest wybrany. Dodajmy pola wyboru do formularza i utwórzmy przycisk wysyłania formularza:

Przetwarzanie danych z formularzy

W proponowanym przykładzie tworzony jest formularz, który wysyła dane do skryptu o nazwie takeform.php. Dlatego musisz utworzyć ten skrypt. Nie będzie to zwykły program, a strona, która powstanie w zależności od danych otrzymanych z formularza. Formularz przesyłany jest metodą POST. Skrypt pobiera te dane z superglobalnej tablicy $_POST. Elementy tablicy można po prostu wykorzystać w skrypcie, ale jeśli musisz dużo z nimi pracować, pisanie nazwy elementu za każdym razem jest niewygodne. Łatwiej jest napisać wartość do zmiennej i uzyskać do niej dostęp. Stwórzmy plik takeform.php i zapisujemy wartości z pierwszych dwóch elementów formularza do zmiennych:

takeform.php:

Tagować