Osobní komunikační centrum v PHP
Osobní stránky doslova přetékají emailovými formulářemi a ikonkami ICQ online/offline. Za pomoci jednoduchých skriptů v jazyce PHP lze utvořit plnohodnotné osobní komunikační centrum.
Naše komunikační centrum má sloužit pro usnadnění komunikace uživatele s nějakou konkrétní osobou. Centrum nabídne možnost odeslání Emailu, SMSky, nebo zprávy na ICQ. Je to jednoduché. Celé centrum se skládá ze dvou částí – formuláře a skriptu PHP, který se postará o odeslání dat.
Nejdříve si prohlédneme formulář:
 <form method=“post“>
 <input type=“hidden“ name=“odeslano“ value=“true“> <table style=“font:13px arial;width:400px;“>
 <tr><td><input type=“text“ name=“jmeno“ value=“Vaše jméno“ /></td><td><input type=“text“ name=“email“ value=“Váš email“ /></td></tr>
 <tr><td colspan=“4″><input type=“text“ name=“predmet“ size=“40″ value=“Předmět zprávy“ /></td></tr>
 <tr><td colspan=“4″><textarea name=“text“ cols=“40″ rows=“12″ value=““>Text zprávy</textarea></td></tr>
 <tr><td colspan=“4″><input type=“submit“ value=“Odeslat“> jako <select name=“jako“>
 <option value=“email“>E-Mail</option>
 <option value=“sms“>SMS</option>
 <option value=“icq“>ICQ</option>
 </select>
  <img src=“http://web.icq.com/whitepages/online?icq=xxxxxxxxx&img=21″ /></td></tr>
 </table>
 </form> 
Zvýrazněné elementy jsou funkční prvky. Nacházíme zde jeden formulář s položkami jméno, email, předmět, text, možnost volby způsobu odeslání, neviditelný vstup odeslano=true, tlačítko ODESLAT a ještě ikonka ICQ online/offline (pokud jste ICQ online, je jasné, že je momentálně ICQ nejrychlejší způsob komunikace s vámi). Místo xxxxxxxxx musíte samozřejmě zadat číslo svého ICQ (pokud nějaké máte). Pokud ICQ nemáte, stačí odmazat řádek <option value=“icq“… a odstranit ikonku ICQ (<img src=“http://web.icq…).
PHP skript vložíte do stejného souboru, jako formulář. Využijeme přitom neviditelné  položky formuláře odeslat s hodnotou true. Pokud pak proměnná $odeslat  bude mít hodnotu true, byl formulář odeslán a můžeme přejít k „odesílací“ části skriptu. Ta je  realizována především pomocí funkce mail(). Pokud bude odeslání úspěšné, nastaví se proměnná  $ok na true a vypíše se hláška informující o úspěšném odeslání. 
Abychom si to trochu zpestřili, použijeme tzv. superglobální proměnné.  Mezi ně patří například $HTTP_GET_VARS, $HTTP_POST_VARS nebo  $HTTP_COOKIE_VARS. Od PHP 4.1.0 lze používat i kratší varianty jako $_GET,  $_POST nebo $_COOKIE. Ty se chovají naprosto stejně, jako jejich  starší vzory. Proměnná $HTTP_POST_VARS je vlastně pole obsahující všechny  proměnné, které byly skriptu předány metodou POST. Další se chovají obdobně. Pokud tedy chceme  ve skriptu použít proměnnou $promenna, která byla odeslána metodou POST,  můžeme napsat buď $promenna, $HTTP_POST_VARS['promenna'], nebo  $_POST['promenna']. Ve skriptu z těchto tří možností vybereme $HTTP_POST_VARS,  pro případ, že by někdo používal starší verzi PHP, než 4.1.0. Ti ostatní samozřejmě mohou  nahradit $HTTP_POST_VARS za $_POST.
 <?php
 if($HTTP_POST_VARS[‚odeslano‘]) {
 if($HTTP_POST_VARS[‚jako‘]==“email“) {
 if(mail(„váš@email.cz“, „Z WWW : “ . $HTTP_POST_VARS[‚predmet‘], $HTTP_POST_VARS[‚text‘], „From:“ . $HTTP_POST_VARS[‚jmeno‘] . “ <" . $HTTP_POST_VARS['email'] . "> \r\n Content-Type: text/plain“)) $ok=true;
 } 
 if($HTTP_POST_VARS[‚jako‘]==“sms“) {
 if(mail(„mobilní@email.cz“, „Z WWW : “ . $HTTP_POST_VARS[‚predmet‘], $HTTP_POST_VARS[‚text‘], „From:“ . $HTTP_POST_VARS[‚jmeno‘] . “ <" . $$HTTP_POST_VARS['email'] . "> \r\n Content-Type: text/plain“)) $ok=true;
 } 
 if($HTTP_POST_VARS[‚jako‘]==“icq“) {
 if(mail(„vaseicq@pager.icq.com“, „Z WWW : “ . $HTTP_POST_VARS[‚predmet‘], $HTTP_POST_VARS[‚text‘], „From:“ . $HTTP_POST_VARS[‚jmeno‘] . “ <" . $$HTTP_POST_VARS['email'] . "> \r\n Content-Type: text/plain“)) $ok=true;
 } 
 if($ok) echo(„Vaše zpráva byla úspěšně odeslána.“); else echo(„Vyskytly se potíže při odesílání vaší zprávy.“);
 }
 ?>
V první řadě je potřeba rozpoznat, jak se vlastně bude zpráva odesílat (jestli jako SMS, nebo Email, nebo jako ICQ).  Poté následuje samotné odeslání mailu. Funkce mail() je vložena namísto podmínky, v případě úspěšného  odeslání (pozor, nikoli doručení) bude podmínka splněna a provede se příkaz $ok=true;.  Ten je potom použit v závěrenčé části skriptu, která, pokud je $ok true, vypíše  „Vaše zpráva byla úspěšně odeslána.“, v opačném případě se na obrazovce objeví  „Vyskytly se potíže při odesílání vaší zprávy.“. 
Ti pozornější si asi všimli možnosti, kdy proměnná  $jako bude mít jinou hodnotu, než email, sms či icq. Pak se skript o odeslání ani nepokusí a  rovnou vypíše chybovou hlášku (proměnná $ok totiž bude mít hodnotu false).  Není to ale špatně. Je pravděpodobné, že nějaké proměnné (jako třeba text zprávy) byly vyplněné, takže uživatel  nejspíš předpokládá, že se skript pokusí zprávu odeslat. S ohledem na tento fakt je vypsání chybové hlášky  zcela korektní.
Teď už ale k použití funkce mail(). Nejprve si ji trochu připomeneme:
mail(adresa_příjemce, předmět, text_zprávy, hlavičky_(nepovinné));
Adresa příjemce je celkem jasná. V našem případě to bude buď emailová adresa, nebo adresa mobilního emailu, popř. adresa ICQ. Ta je ve tvaru xxxxxxxxx@pager.icq.com, s tím, že xxxxxxxxx je číslo vašeho ICQ.
Předmět vyplňuje uživatel, my mu jen přidáme na začátek Z WWW : , abychom věděli, že zpráva byla poslána z našeho komunikačního centra.
Text zprávy ponecháme, problémy s možnými značkami HTML odpadnou nastavením typu emailu na text/plain (v dalším odstavci).
Hlavičky jsou nepovinným atributem funkce mail(). My je zde použijeme  pro vložení jména a emailu uživatele (pro snadnější odpovídání) a pro nastavení typu emailu:
From : Jméno příjmení <jmenoprijmeni@email.cz>
 Content-type: text/plain
Teď už jen stačí vložit formulář s php skriptem do své stránky.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
											
											
											
											
											
											
											
											







Angličtina
Čvc 26, 2011 v 22:31Užitečný článek a moc pěkný design webu.