PHP - formulár a email

V dnešnom článku ukážeme príklad ako si vytvoriť jednoduchý formulár v php, ktorý je ľahko zostrojiteľný z 1 alebo 2 skriptov. Celý formulár bude zostrojený s 2 súborov a to s data.php a form.php.
Náplňou článku ale nebude len naučiť vás robiť formuláre ale aj rozosielať za pomoci nich emaily. Tak sa do toho rovno môžeme pustiť. Formulár
Ako prvé čo budeme musieť vytvoriť sú 2 súbory a to form.php a data.php. V prvom súbore form.php sa bude nachádzať samotný formulár, ktorý bude odosielať dáta do súboru data.php, ktorý ich potom spracuje a vypíše. Zdrojový kód formuláru si môžete skopírovať tu:
<form action="data.php" method="post">

<fieldset><legend>Formulár a email</legend> Meno: <input name="meno" type="text" 
size="32" /><br />

Priezvisko: <input name="priezvisko" type="text" size="28" /><br />

E-mail: <input name="email" type="text" size="32" /><br />

Predmet: <input name="predmet" type="text" size="30" /><br />


<br>Text:<br>

<textarea name="text" rows="7" cols="30"></textarea><br>

<input name="odoslat" type="submit" value="Odoslať" />

</fieldset></form>


<br>

<font color="red">Všetky údaje sú povinné!</font>

Výsledok bude vyzerať takto:

Formulár a email Meno: Priezvisko: E-mail: Predmet: Text:
Všetky údaje sú povinné!
Ako vidíte nieje to ťažké. Teraz máme celý formulár hotový. Rád by som ešte ale doplnil k formuláru, že je veľmi dôležité aby tam zostali parametre name="", pretože by skript data.php nevedel rozpoznať aké dáta príma a potom by vlastne nemal ani čo spracovať.

Spracovanie dát


A teraz rovno k zdrojovému kódu data.php

<?

$prijemca = "váš@email.niečo";



if ($meno && $email && $predmet && $text){

mail("$prijemca", "$predmet", "$meno $priezvisko Vám posiela tento text $text", 
"from: $email");

echo "Váš <b>email bol</b> úspešne <b>odoslaný</b>!";

}

elseif (($meno && $email && $predmet && $text) == false){

echo "Váš <b>email nebol odoslaný</b>. <b>Nezadali ste všetky</b> povinné 
<b>údaje</b>.";

}

?>

Ak si pozriete kód tak sami asi usúdite, že $prijemcu si musíte vyplniť sami resp. musíte nahradiť ten text váš@email.niečo emailom na ktorý chcete formulár odoslať. Za podmienkou "if" nasleduje text s úspešným odoslaním emailu. Všetky premenné $meno, $text... atď. sú vlastne mená tagov <input /> a <textarea> v súbore form.php (napr. meno v súbore form.php je to isté čo $meno v súbore data.php a preto som aj uvádzal dôležitosť parametru name="" ). Prvá podmienka udáva to, že ak sú každému tagu <input> a <textarea> priradené hodnoty, tak sa odošle email (tvar emailu je - mail(príjemca, predmet, obsah, odosielateľ)) a vypíše sa aj text s úspešnosťou odoslania (to zariadi echo "Váš <b>email bol</b> úspešne <b>odoslaný</b>!";). Druhá podmienka "elseif" uvádza to, že keď niekto nevyplní jednu alebo všetky z položiek tak potom jeho email nebude odoslaný a zobrazí sa mu text o neúspešnom odoslaní emailu. (echo "Váš <b>email nebol odoslaný</b>. <b>Nezadali ste všetky</b> povinné <b>údaje</b>.";).


To by bolo o odosielaní emailu pomocou formuláru asi všetko. Samozrejme namiesto funkcie mail si tam môžete dať aj funkciu vlastnú ale to už by bolo niečo čo do tohoto článku nepatrí. Odporúčam taký článok vyhľadať na stránke v rubrike "php". Tam sa dozviete o funkciách viac.
Alternatívne verzie: Text PDF Voice
Autor: PaBi3 · Kategória: Programovanie · Dátum: 01.05.2005 22:30

Komentáre

#1 oto24 E-mail
30.01.2008 20:53
nechapem vsetko som urobil ako mam a neprisiel mi ten email

aj mi napisalo ze Váš email bol úspešne odoslaný a nič skontroloval som prijemcu a mam ta normalne svoj email poradte prosim dakuejem pekne

#2 burn E-mail
09.02.2008 00:08
[1] oto24,
neskusal som to este ale skus v data.php na zaciatku doplnit php... nech ten prvy riadok vyzera takto: <?php a vzdy predtym ako zacnes menit telo scriptu skontroluj ci mas vsade dopisane "php" vo vacsine pripadov je chyba tato...

#3 filozof
18.02.2008 14:38
[2] burn, NIE...za začiatkom (<?) je vždy výraz tj. $,echo atd...

#4 tomas.b E-mail
22.02.2008 21:47
Ja mam jednu otazku. Kedze s php neviem velmi pracovat, mozno blbu. Ale: Skript je funkcny, lenze ako ho vlozim na stranku a tu stranku otvorim, hned mi vypise ze mail neodoslal adt atd, ale ja som mail este ani nesiel posielat. P kazdom spusteni stranky to vypise. Neda sa to nejak vyriesit? Urcite je terba len niekde nieco dopisat, ale ja bohuzial neviem co.
Dakujem za odpoved!

#5 izzi Web E-mail
28.02.2008 15:50
musis ale otvorit stranku: form.php...

#6 Sue Web E-mail
26.04.2008 16:31
pozdravujem, dakujem za vzor formularu. Odosielanie funguje v poriadku, len mam jeden problem. Formular som si modifikovala podla svojich potrieb, avsak cely text, ktory sa zadal vo formulari, mi skript hodil do subjektu spravy. v tele spravy mam iba mailovu adresu odosielatela. Zial, nakolko neovladam php skript, neviem prist na to, kde to opravit.
Prikladam tu aj kod suboru data.php.
Dakujem za pomoc.<?
$prijemca = "sueweb@sueweb.sk";
if ($meno && $vek && $email && $Kraje && $požadovaný_vek && $poznamka){
mail("$prijemca", "$meno $priezvisko zadal/a tieto údaje:<br />
$Kraje, <br />
$požadovaný_vek<br />
$poznamka",
"from: $email");
echo "Váš <b>email bol</b> úspešne <b>odoslaný</b>!";
}
elseif (($meno && $vek && $email && $Kraje && požadovaný_vek && $poznamka) == false){
echo "Váš <strong>email nebol odoslaný</strong>. <strong>Nezadali ste všetky</strong> povinné <strong>údaje</strong>.";
}
?>

#7 admin Web E-mail
26.04.2008 21:39
admin Používate nesprávne PHP funkciu mail(). Všimnite si, že druhým parametrom je predmet a vy tam vkladáte všetky údaje (meno, priezvisko, vek...). Tieto údaje patria až do 3. parametra, čiže správne by sa funkcia volala takto:

mail($prijemca, "Nejaký predmet", "$meno $priezvisko<br />, $vek, $text...",
"from: $email");

Osobné údaje
Captcha
Odpíšte text z obrázku. Rozlišujú sa malé a veľké písmená.
Obsah
Možnosti