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.