Hlavná stránka · Diskusné Fórum · Pracovné príležitosti · Zoznam

 Main Menu
o Hlavná stránka
o Zoznam tém
o Zoznam
o Odporučte nás
o Užívatelia
o Vaše konto
o Pridaj článok
o Štatistiky
o Top 10

 Reklama


 Developer Zone's
o Internet
o Tools
o Linux
o CGI Zone
o ASP Zone
o ASP.net
o PHP Zone
o CSS Zone
o JavaScript
o MySQL
o WAP / WML
o WML / WMLScript
o XML / XHTML
o Tipy a triky
o Best of web
o WebServers
o WebDesign
o Grafika

 Servis
o Vyhľadávanie
o Fórum
o Workoffice
o Zoznam článkov
o Reklama
o Pridaj článok
o Pridaj novinku

Napíšte nám
Homepage Do favoritov

 LinkExpres
Interval.cz · Pc.sk
Builder.cz · Mobilmania
PCSvet.cz · Asp.cz
Webdnes · Živě.sk
Zoznam.sk · Atlas.sk
Inzine.sk · PHP.sk
Agent.sk · Lupa.cz
Code.box.sk · Root.cz
Pixel32 · Grafika.cz

 forum.developer.sk
o Fórum ::
o Markup languages
o Scriptové jazyky
o CGI
o PHP/MySQL
o Perl
o Grafika
o Webservery
o HTML Editory
o Browsery
o Bookmarx
o ASP
o Vytvor tému ::

 Pracovné príležitosti
o Ponúkate prácu?
o Hľadáte prácu?

 Autori developer.sk
o Martin Nemeček
o Sväťo Straka
o Jany Masaryk
o Jozef Murín

 
CGI / Perl [ 06. March 2000] - Svato_Straka
Odoslanie mailu z formulára - 11. časť CGI
Dnes si ukážeme, ako pomocou CGI vytvoriť skript, ktorý odošle dáta z formulára na stránke na váš e-mail. Využijeme k tomu program sendmail a perlovský modul CGI.pm.



Čo teda budeme potrebovať? V prvom rade to bude stránka s formulárom, do ktorého užívateľ zadá svoje meno, e-mailovú adresu, predmet správy a jej znenie. Ďalej to bude samotný skript, ktorý správu spracuje a odovzdá programu sendmail. Ako posledná súčasť to bude stránka, ktorá sa zobrazí po odoslaní mailu ako poďakovanie.

Nebudem sa tu zaoberať vytvorením formuláru pre správu ani stránky s poďakovaním. Toto by ste mali predpokladám všetci zvládnuť. Upozorním tu na to, že skript je písaný "univarzálne", to jest môžete ho zavolať pomocou metódy GET i POST. Pomerne veľkým pomocníkom je tu modul CGI. Tu je zdrojový kód skriptu:

  
  use CGI;

  $mail = "developer@developer.sk";
  $sendmail = "/usr/bin/sendmail -t -n -oi";
  $qry = new CGI();

  $from = $qry->param('meno');
  $email = $qry->param('email');
  $subject = $qry->param('subject');
  $message = $qry->param('msg');

  open(SENDMAIL, "| $sendmail");
  print SENDMAIL <<HlavickyMailu;
  From: $from <$email>
  To: $mail
  Reply-To: $email
  Subject: $subject
  X-Remote-Host: $ENV{REMOTE_ADDR}
  HlavickyMailu
  print SENDMAIL "n", $message;
  close SENDAMIL;

  $qry->redirect('http://www.developer.sk/thanks.html');

Funkcia skriptu je jednoduchá. Na začiatku si do premennej $mail uložíme adresu, na ktorú bude správa odoslaná. Do premennej $sendmail uložíme plnú cestu k programu sendmil aj s potrebnými flagmi. Flag -t zaistí, že sendamil sa bude snažiť nájsť hlavičku To:, v ktorej bude zadaná adresa na ktorú sa má správa poslať. Flag -n potom zaistí, aby sa nepoužívali aliasy adries (pokým by ste skript rozšírili tak, aby užívateľ mohol zadať sám adresu, mohol by bez voľby -n používať vami definované aliasy a to asi nechcete).

Ďalším krokom je vytvorenie nového CGI objektu $qry. Volanie $qry->param('nazov_parametru') vráti hodnotu daného parametru. (Bližšie info o module CGI viď. perldoc CGI). V našom skripte teda do premenných $from, $email, $subject a $message vložíme hodnoty polí meno, email, subject a msg z formulára vyplnené užívateľom. Odporúčam spraviť kontrolu zadania polí vo formulári pomocou JavaScriptu už na samotnej stránke, ušetríte tak nejaké tie prostriedky pri behu skriptu. Minimálne polia meno (premenná $from) a email (premenná $email) by mali byť zadané.

Ďalším krokom po naplnení premenných je otvorenie rúry k programu sendmail pomocou príkazu open. Do nej potom zapisujeme hlavičku mailu obsahujúcu polia From, To, Reply-To, Subject a X-Remote-Host. Význam prvých štyroch je jasný. Piata položka hlavičky, X-Remote-Host, je definovaná užívateľom a program sendmail ju nevyžaduje. Obsahuje IP adresu užívateľovho stroja (resp. proxy za ktorým užívateľ sedí) a je pridaná z dôvodu, že vám môže prísť mail s vymysleným menom a e-mail adresou. Takto potom aspoň viete, z akej IP bol tento mail odoslaný ;-)

Po hlavičke mailu nasleduje prázdny riadok, ktorý oddeľuje hlavičku od samotnej správy. Po zapísaní správy sa uzavrie rúra k sendmailu a tým sa správa odošle. Až keď je skutočne odoslaná je zavolaná metóda redirect objektu $qry, ktorá presmeruje užívateľov browser na stránku s poďakovaním za odoslanie správy.

Tu si môžete pozrieť skript v praxi

 
 Príslušné odkazy k téme
Viac o téme: CGI / Perl | Iné články od: Admin | Pošli komentár | Stránka vhodná na tlač width=15 height=11  Pošli tento článok priateľovi, známemu width=15 height=11


Najčítanejšie články CGI / Perl:
Čo je to CGI? - Úvod do CGI

Ďalšie články v rubrike CGI / Perl:

 

"Odoslanie mailu z formulára - 11. časť CGI" | Login / vytvor konto | 0 Komentárov
Prah
Za obsah komentárov je zodpovedný užívateľ, nie prevádzkovateľ týchto stránok.



Autorské práva:   ©1999 - 2001 Developer Zone [developer@developer.sk]

Všetky články sú vlastníctvom autorov Developer Zone. Všetky práva vyhradené. Stránky Developer.sk sú vytvorené pomocou PHP-Nuke.
Odkazy na nové články je možné preberať pomocou:Backend.php.