Komplexní formulář zpětné vazby. Vytvoření formuláře zpětné vazby v PHP

Takže, začneme, nejprve si stránku označíme a napíšeme pro ni styly. Součástí označení bude běžný formulář zpětné vazby se dvěma vstupy (telefon, mail) a jednou textovou oblastí, kam podle naší představy uživatel zadá svou zprávu. Obsluhu formuláře umístíme na samostatnou stránku.

Formulář zpětné vazby

Zadejte telefon:

Tvůj mail:

Tvá otázka:


Napíšeme styly:

Html, tělo( výška: 100 %; okraj: 0; ) html( barva pozadí: #fff; barva: #333; písmo: 12px/14px Verdana, Tahoma, sans-serif; kurzor: výchozí; ) #feedback-form ( background-color: #ececec; margin: 50px auto 0; text-align: center; width: 430px; padding: 15px; ) #feedback-form h2( margin-bottom: 25px; ) #feedback-form input, #feedback -form textarea( background-color: #fff; border: 1px solid #A9A9A9; padding: 1px 5px; width: 90%; ) #feedback-form input( height: 26px; ) #feedback-form textarea( height: 75px; padding-top: 5px ) #feedback-form input( margin-top: 15px; background-color: #0B7BB5; border: 1px solid #CCCCCC; color: #FFFFFF; font-weight: bold; height: 40px; line- výška: 40px; text-transform: velká písmena: 225px;

V důsledku všech těchto akcí získáte tento formulář:

Nyní je čas řešit server. Náš skript bude obsahovat několik částí:

  • Nastavení;
  • Sekundární funkce;
  • Zpracování příchozích dat;
  • Výstup zprávy.

Všechny tyto části jsou samozřejmě podmíněné, protože nám nikdo nebrání v kódu udělat nepořádek nebo naopak klíčové části přesunout do jiných souborů. Ale myslím si, že je lepší vytvořit handler v jednom souboru, aby bylo vhodné jej připojit k dalším projektům.

Nastavení

V této fázi vytvoříme tři proměnné: $my_email (schránka, do které se odesílají data), $path_log (cesta k souboru protokolu) a $time_back (čas, kdy se uživatel vrátí na web).

// Zadejte svou poštovní schránku $my_email = " [e-mail chráněný]"; // Určete, kde budou uloženy protokoly $path_log = "log.txt"; // Čas, kdy se uživatel vrátí na stránku (s) $time_back = 3;

Sekundární funkce

Zde popíšeme pět funkcí, které zjednoduší zpracování dat.

Šablony výstupu zpráv:

Function error_msg($message)( $message = "".$message.""; return $message; ) function success_msg($message)( $message = "".$message.""; return $message; )

Vymazání dat přijatých z formuláře:

Funkce clear_data($var)( return trim(strip_tags($var)); )

Odesílání dopisu:

Funkce send_mail($email, $subj, $text, $from)( $headers = "Od: ".$from." \r\n"; $headers .= "MIME verze: 1.0\r\n"; $headers .= "Typ obsahu: text/html; charset=utf-8 \r\n"; $result = mail($email, $subj, $text, $headers ) return true;

A poslední funkce, která zkontroluje telefon a poštu na správný záznam jejich formátu.

Funkce check_format($data, $type)( switch($type)( case "e-mail": $pattern = "/^*@(+(*+)*\.)++$/i"; if(preg_match( $vzor, ​​$data))( return true; ) break; case "phone": $pattern = "/^(\+?\d+)?\s*(\(\d+\))?[\s-] *([\d-]*)$/"; if(preg_match($pattern, $data))( return true; ) break; ) return false; )

Jak vidíte, všechny funkce, které jsme napsali, mají malou velikost. Můžete je ponechat mimo oblast zpracování dat, ale když potřebujete něco změnit nebo rozšířit, například check_format(), bude to mnohem jednodušší a pohodlnější.

Zpracování příchozích dat

Nejprve zjistíme, ze které stránky uživatel přišel. Poté definujeme proměnné, do kterých budou naše zprávy a stav odeslání dopisu uloženy.

// Zjistěte předchozí stránku $prev_page = $_SERVER["HTTP_REFERER"]; // Naše zprávy $msg = ""; // Stav e-mailu $status_email = "";

Nyní, abychom se vyhnuli problémům s kódováním, jej označíme pomocí záhlaví.

Header("Content-Type: text/html; charset=utf-8");

If($_SERVER["REQUEST_METHOD"] == "POST")( if(isset($_POST["číslo"], $_POST["e-mail"], $_POST["question"]))( $number = clear_data ($_POST["číslo"] $email = clear_data($_POST["e-mail"]); $question = clear_data($_POST["dotaz"]); if(check_format($číslo, "telefon") &&); check_format($email, "email") && !empty($question))( // Vytvořit dopis $e_title = "Nová zpráva"; $e_body = ""; $e_body .= ""; $e_body .= "Телефон: ".$number; $e_body .= "!}
"; $e_body .= "Mail: ".$email; $e_body .="
"; $e_body .= "Otázka: ".$question; $e_body .= ""; $e_body .= ""; // END Vytvořit dopis if(send_mail($my_email, $e_title, $e_body, $prev_page) ) ( $status_email = "úspěch"; $msg = success_msg("Děkujeme za vaši otázku.
Odpovíme vám co nejdříve."); )else( $status_email = "chyba"; $msg = error_msg("Při odesílání e-mailu došlo k chybě."); ) // Zapsat do souboru $str = " Čas: ".date ("d-m-Y G:i:s")."\n\r"; $str .= "Telefon: ".$číslo."\n\r"; $str .= "Mail: " .$email." \n\r"; $str .= "Otázka: ".$dotaz."\n\r"; $str .= "E-mail: ".$stav_e-mail."\n\r"; str .= "= ======================================\n\r"; ($path_log, $str, FILE_APPEND )else( $msg = error_msg( "Vyplňte formulář správně!"); ) )else( $msg = error_msg("Došlo k chybě!"); ) )else( exit); ;

V zapsaném kódu zjistíme, zda byl formulář odeslán, jinak tento soubor zavřeme pomocí funkce exit. Dále zkontrolujeme přítomnost buněk s našimi daty v poli POST, pokud dorazily, vyčistíme je od možného odpadu. Po vyčištění zkontrolujeme formáty pošty a telefonu a také přítomnost textu v proměnné dotaz. Dále dopis vygenerujeme, odešleme a sepíšeme logy, kde kromě dat uložíme stav odeslání dopisu. Můžeme tak sledovat chod funkce mail() a zároveň nepřijít o data.

Výstup zprávy

Jediné, co musíme udělat, je upozornit uživatele na úspěšnou nebo „ne“ dokončenou operaci a vrátit ho zpět na stránku s formulářem. K tomu používáme značkování s zahrnutím skriptů PHP.

Pro přesměrování uživatele zpět na stránky použijeme refresh meta tag, kam vložíme PHP kód s již vytvořenými proměnnými. Budeme také muset použít trochu JavaScriptu, aby byla stránka trochu dynamičtější. Napíšeme funkci timeBack(), která bude počítat sekundy v obráceném pořadí před přesměrováním.