Üks populaarsemaid funktsioone saidil on taotlus- või tellimisvorm, mille andmed saadetakse e-posti teel saidi omanikule. Reeglina on sellised vormid lihtsad ja koosnevad kahest või kolmest andmesisestusväljast. Kuidas sellist tellimisvormi koostada? See eeldab HTML märgistuskeele ja PHP programmeerimiskeele kasutamist.
HTML märgistuskeel ise on lihtne, peate lihtsalt välja mõtlema, kuidas ja kuhu teatud sildid panna. PHP programmeerimiskeelega on asjad veidi keerulisemad.
Programmeerija jaoks pole sellise vormi loomine keeruline, kuid HTML-i küljenduskujundaja jaoks võivad mõned toimingud tunduda keerulised.
Looge andmete esitamise vorm html-is
Esimene rida on järgmine
Nüüd paneme kõik kokku.
Nüüd muudame vormis olevad väljad kohustuslikuks. Meil on järgmine kood:
Looge fail, mis aktsepteerib HTML-vormingus andmeid
See on fail nimega send.php
Failis peate esimeses etapis vastu võtma postituste massiivi andmed. Selleks loome kaks muutujat:
$fio = $_POST["fio"];
$email = $_POST["e-post"];
PHP-s on muutujate nimede ees $-märk ja iga rea lõppu asetatakse semikoolon. $_POST on massiiv, kuhu saadetakse vormi andmed. HTML-vormingus on saatmisviisiks määratud method="post". Seega aktsepteeritakse kaks muutujat html-vormist. Oma saidi kaitsmiseks peate need muutujad läbima mitme filtri - php funktsioonid.
Esimene funktsioon teisendab kõik märgid, mida kasutaja proovib vormile lisada:
Sel juhul ei looda php-s uusi muutujaid, vaid kasutatakse olemasolevaid. Filter muudab tegelase "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
Teine funktsioon dekodeerib URL-i, kui kasutaja proovib seda vormi lisada.
$fio = urldekood($fio);
$email = urldecode($email);
Kolmanda funktsiooniga eemaldame rea algusest ja lõpust tühikud, kui neid on:
$fio = trimmi($fio);
$email = trimmi($email);
On ka muid funktsioone, mis võimaldavad teil php muutujaid filtreerida. Nende kasutamine sõltub sellest, kui mures te olete, et ründaja proovib sellele html-meili esitamise vormile programmikoodi lisada.
HTML-vormingust PHP-faili edastatud andmete valideerimine
Et kontrollida, kas see kood töötab ja kas andmeid edastatakse, saate selle lihtsalt kajafunktsiooni abil ekraanile kuvada:
kaja $fio;
kaja"
";
kaja $fio;
Teine rida siin on vajalik php muutujate väljundi eraldamiseks erinevateks ridadeks.
Vastuvõetud andmete saatmine HTML-vormilt e-posti, kasutades PHP-d
Andmete e-posti teel saatmiseks peate kasutama PHP-s postifunktsiooni.
mail("millele aadressile saata", "kirja teema", "Sõnum (kirja sisu)","From: milliselt meililt kiri saadetakse \r\n");
Näiteks peate saatma andmed saidi omaniku või halduri meilile [e-postiga kaitstud].
Kirja teema peaks olema selge ja kirja sõnum peaks sisaldama seda, mida kasutaja HTML-vormis määras.
mail (" [e-postiga kaitstud]", "Rakendus saidilt", "Täisnimi:".$fio.". E-post: ".$email ,"Saatja: [e-postiga kaitstud]\r\n");
Vajalik on lisada tingimus, mis kontrollib, kas vorm saadeti PHP-ga määratud meiliaadressile.
if (mail(" [e-postiga kaitstud]", "Telli saidilt", "Täisnimi:".$fio.". E-post: ".$email ,"Saatja: [e-postiga kaitstud]\r\n"))
{
echo "sõnum edukalt saadetud";
) muidu (
}
Seega näeb faili send.php programmikood, mis saadab HTML-vormingu andmed kirja, välja järgmine:
$fio = $_POST["fio"];
$email = $_POST["e-post"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldekood($fio);
$email = urldecode($email);
$fio = trimmi($fio);
$email = trimmi($email);
//kaja $fio;
//kaja "
";
//echo $email;
if (mail(" [e-postiga kaitstud]", "Rakendus saidilt", "Täisnimi:".$fio.". E-post: ".$email ,"Saatja: [e-postiga kaitstud]\r\n"))
( kaja "sõnum edukalt saadetud";
) muidu (
kaja "teate saatmisel tekkisid vead";
}?>
Kolm rida, et kontrollida, kas andmeid edastatakse faili, on välja kommenteeritud. Vajadusel saab neid eemaldada, kuna neid oli vaja ainult silumiseks.
Vormi esitamise HTML- ja PHP-koodi paneme ühte faili
Selle artikli kommentaarides esitavad paljud inimesed küsimuse, kuidas veenduda, et nii HTML-vorm kui ka PHP-kood andmete e-posti saatmiseks on ühes failis, mitte kahes.
Selle töö realiseerimiseks tuleb faili send.php paigutada vormi HTML kood ja lisada tingimus, mis kontrollib muutujate olemasolu POST-massiivis (see massiiv saadetakse vormilt). See tähendab, et kui massiivi muutujaid pole, peate kasutajale vormi näitama. Vastasel juhul peate massiivist andmed vastu võtma ja saatma need adressaadile.
Vaatame, kuidas muuta PHP-koodi failis send.php:
//kontrollige, kas POST-massiivis on muutujaid
if(!isset($_POST["fio"]) ja !isset($_POST["e-post"]))(
?> ) muidu (
//näita vormi
$fio = $_POST["fio"];
$email = $_POST["e-post"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldekood($fio);
$email = urldecode($email);
$fio = trimmi($fio);
$email = trimmi($email);
if (mail(" [e-postiga kaitstud]", "Rakendus saidilt", "Täisnimi:".$fio.". E-post: ".$email ,"Saatja: [e-postiga kaitstud]\r\n"))(
kaja "Sõnum edukalt saadetud";
) muidu (
kaja "Sõnumi saatmisel ilmnesid vead";
}
}
?>
Muutuja olemasolu POST-massiivis kontrollime PHP funktsiooniga isset(). Hüüumärk selle funktsiooni ees tingimuses tähendab eitust. See tähendab, et kui muutujat pole olemas, peame näitama oma vormi. Kui ma poleks hüüumärki pannud, tähendaks tingimus sõna-sõnalt „kui on olemas, siis näita vormi”. Ja see on meie puhul vale. Loomulikult saate selle ümber nimetada index.php-ks. Kui nimetate faili ümber, ärge unustage rea faili nime ümber nimetada
Nii näeb vorm brauseris visuaalselt välja.
Järgmisena kirjutame faili koodi mail.php. Me mõtleme muutujatele välja oma nimed. IN PHP muutuja algab märgiga $ millele järgneb muutuja nimi. Muutuja tekstiväärtus on jutumärkides. Muutujate abil saadetakse vormi sisu administraatori meilile, pannes lihtsalt vormielemendi nime nurksulgudesse – väärtus nimi.
$kuni = " [e-postiga kaitstud]"; // vormi andmete saaja meiliaadress
$tema = "Tagasisidevorm PHP-s"; // saabunud meili teema
$message = "Teie nimi: ".$_POST["nimi"]."
";//määrake muutujale vormist nimi=nimi saadud väärtus
$message .= "E-post: ".$_POST["e-post"]."
"; //saadud kujul nimi=e-post
$message .= "Telefoninumber: ".$_POST["telefon"]."
"; //saadud kujul nimi=telefon
$message .= "Sõnum: ".$_POST["sõnum"]."
"; //saadud kujul nimi=teade
$headers = "MIME-versioon: 1.0" . "\r\n"; // päis vastab vormingule ja reavahetusele
$headers .= "Sisutüüp: text/html; charset=utf-8" . "\r\n"; // näitab saadetava sisu tüüpi
mail($adressaat, $tema, $sõnum, $päised); //saadab adressaadile muutuvaid väärtusi meili teel
?>
Seega andmed massiivist $_POST edastatakse vastavatele muutujatele ja saadetakse funktsiooni abil meili teel mail. Täidame oma vormi ja vajutame esitamisnuppu. Ärge unustage lisada oma e-posti. Kiri saabus koheselt.
Lisamise kuupäev: 2011-12-01
Vaatame näidet veebisaidilt oma e-posti aadressile sõnumi saatmisest. Miks see vajalik on? Oletame, et teie lehel on kommentaariväli ja peate kiiresti teada saama, kui keegi on kommentaari jätnud. Te ei lähe oma veebisaidile iga minut ega otsi uusi kommentaare.
Vormi loomise ja kirja saatmise protsess on lihtne. Kuid on hetki, mis võivad su tuju terveks päevaks rikkuda.
Esimeseks raskuseks on rumal ja vananenud venekeelsete kirjade standard. Seetõttu võite oma postkasti saada kirju "hullude" sõnumitega. See probleem on eriti märgatav meiliklientide puhul, nagu Windows Mail, Outlook Express jne. Kui loete kirju läbi veebiliidese, siis pole probleem nii pakiline. Paljud meiliserverid on meili korrektseks kuvamiseks piisavalt nutikad.
Teine probleem on soovimatud meilid. Mõned "alternatiivselt" andekad inimesed võivad saatmisnuppu lõputult vajutada (üleujutus). Nende hulka võivad kuuluda ka robotid – spetsiaalselt kirjutatud programmid, mis ise nuppe vajutavad.
Kolmas probleem on kaitse haavatavuse eest. Kui saate saidile midagi sisestada, on häkkimise võimalus. Näiteks palute sisestada väljale registreerimiseks e-posti aadress ja häkker sisestab spetsiaalselt ettevalmistatud pahatahtliku skripti, mis võib teie saidi rikkuda.
Kui kirjeldatud raskused teid ei hirmuta ja soovite saidilt sõnumeid saada, siis jätkake...
Alustame lihtsa näitega ilma kellade ja viledeta.
Loome faili forms.php, mis sisaldab sõnumi saatmise vormi.
Sinu nimi:
Sõnum:
";
?>
Oleme just loonud kahe tekstivälja ja nupuga vormi. Pange tähele, et määratlesime vormi jaoks postitamismeetodi ja määrasime selle parameetris tegevust vormitöötleja tee on mail.php. Loomulikult saate failile määrata oma aadressi ja teise nime.
Nüüd loome faili mail.php (meie näites peaks see olema samas kaustas).
$len) ( exit("Viga. Sõnum ei tohi ületada ".$len." tähemärki."); ) // siin peate määrama oma e-posti aadressi, et saada kirju $to = " [e-postiga kaitstud]"; $subject="Kiri ".$name"; // teisendage Windows-1251-st koi8-r $subject = convert_cyr_string($subject,"w","k"); // see on täht ise $sõnum = "
Uus kommentaar:
".$message_text.""; // teisendada Windows-1251-st koi8-r $message = convert_cyr_string($message,"w","k"); // sõnumi päised $headers = "Sisutüüp: tekst/html; charset=KOI8-R\r\n"; // kellelt on kiri $headers .= "Saatja: server\r\n\r\n"; if(mail($saatja,$subject,$sõnum,$ headers) ) ( kaja "Kiri saadeti edukalt."; ) else ( echo "Viga. Kirja ei saadetud."; ) ?>
Põhimõtteliselt piisab sellest kirja saatmiseks. Peaasi on veenduda, et teil on saidil luba kasutada funktsiooni mail(), kuna mõned hostijad keelavad selle või kehtestavad saadetavate meilide arvule mitmesuguseid piiranguid.
Kaitse tugevdamine
Kirjeldatud näites on funktsiooni kujul minimaalne kaitse htmlspecialchars. Teine kaitsevorm võib olla seansside kasutamine.
Esimese faili alguses sisestage järgmine.
// seansi initsialiseerimine session_start();// kirjade printimine echo $er; // vormi kaja "
Nagu alati, on selle vormi kood täielikult toimiv ja seda saab (peaks) brauseris vaadata ja kopeerida.
Järgmiseks peate kohandama PHP lehte tagasisidevormilt sõnumi saatmiseks koos manustatud failiga teie e-posti aadressile. Nagu eelpool mainitud, on vormide töötlemiseks väga palju võimalusi ja ratast pole vaja uuesti leiutada.
Nüüd tuleb meil ainult manustatud failiga kirjade saatmise eest vastutavat PHP-lehte veidi muuta ja seda lisada klass.phpmailer.php käsk sisaldab "class.phpmailer.php"; ja paar rida edastatud faili töötlemiseks.
Täielik töötava lehe kood mail.php Manustatud failiga saidilt sõnumite saatmine on toodud allpool:
funktsioon send_mail()
{
$nimi = htmlspecialchars($_REQUEST["nimi"]);
}
{
$email = htmlspecialchars($_REQUEST["e-post"]);
}
$message = " Saatja nimi:".$_REQUEST["nimi"]."
E-posti aadress:".$_REQUEST["e-post"]."
Sõnum:".$_REQUEST["segadus"];
Kaasake "class.phpmailer.php" // ühendage klass
$post = uus PHPMailer();
$post->Saatja = $_REQUEST["e-post"];
$post->FromName = $_REQUEST["nimi"];
$mail->AddAddress(" [e-postiga kaitstud]
");
$post->IsHTML(tõene);
$post->Teema = $_POST["pealkiri"];
If(isset($_FILES["failid"]))
{
if($_FILES["failid"]["viga"] == 0)
{
$mail->AddAttachment($_FILES["failid"]["tmp_nimi"],$_FILES["failid"]["nimi"]);
}
}
$post->Keha = $teade;
if (!$mail->Send()) die ("Mailier Error: ".$mail->ErrorInfo);
{
kaja"
Klõpsake avalehele naasmiseks";
}
if (!empty($_POST["esita"])) send_mail();
?>
Enne faili mail.php saidile üleslaadimist ärge unustage seda muuta [e-postiga kaitstud] teie meilile.
Erinevalt artikli esimeses osas käsitletust on see PHP skript tagasiside vormi töötlemiseks veidi keerulisem, kuid loob õigema e-kirja, mis näitab saatja aadressi ja tema kirja teemat, millele saate vastata tavaline viis.
» PHP Sendmaili skript
PHPSendMail
Vormi kasutamiseks peate lihtsalt sisestama oma e-posti seaded ja ongi kõik. Üldiselt on skript kasutamiseks valmis ja see PHP-protsessoriga HTML-i saidi tagasisidevorm sobib ideaalselt väikeste saitide, visiitkaartide saitide jaoks.
| Allalaaditud: korda
Lihtne PHP Send Mail
Selle väga EASY PHP-skripti abil saavad teie veebisaidi külastajad tagasisidevormi kaudu otse teile e-kirju saata.
| Allalaaditud: korda
PHP + AJAX skript vormide saatmiseks e-postile
Universaalne skript andmete saatmiseks vormidest meili. Skript sobib ideaalselt selliste saitide jaoks nagu sihtleht, visiitkaartide saidid jne.
| Allalaaditud: korda
PHP Maileri finaal koos captchaga
Skript kuvab vormi ja kui täidad nõutud väljad, saadab sõnumi sinu e-mailile. Skriptil on sisseehitatud kaitse robotite eest: enne kirja saatmist tuleb sisestada captcha.
| Allalaaditud: korda
GentleSource'i vormipost
Teil on valida kahe võimaluse vahel: kas kasutaja jõuab ümbersuunamise abil teie tekstiga tänulehele või kuvatakse kasutajale teave sõnumi eduka saatmise kohta.
| Allalaaditud: korda
Mikropostitus
Micro Mailer on väike PHP-skript, mis võimaldab teil ja teie veebisaidi külastajatel saata kirja mis tahes adressaadile.
| Allalaaditud: korda
Web4you-FM
Web4you-FM Kirja saatmine teie veebisaidilt. Omadused: 1 - Valige adressaat ja nende arv (1 kuni 4). 2 - Kontrollige, kas vorm on õigesti täidetud. Kellele. Nimed, ainult tähed...
| v.1.0 | Allalaaditud: korda
Kerge PHP kontaktivorm
Tagasisidevormi kaudu kirja saatmise skript on nii lihtne, et ka inimene, kes PHP/HTML-i ei tunne, saab programmi raskusteta kasutada...
| Allalaaditud: korda
DodosMail
DodosMail on lihtsalt installitav PHP-skript, mis võimaldab teil saata e-kirju oma veebisaidil oleva tagasisidevormi kaudu. Peate lihtsalt php-faili üles laadima.
| v.2.5 | Allalaaditud: korda
PHP kontaktivorm
PHP kontaktivormi skript sisaldab järgmisi funktsioone: 1) rämpsposti ennetamise funktsioon. Kasutaja peab sisestama turvakoodi, tuntud ka kui captcha.
| Allalaaditud: korda
TPCS-i kontakt (e-posti vorm)
See TPCS-i kontakti skript võimaldab teie külastajatel teiega tagasisidevormi kaudu ühendust võtta. Kogu teave saadetakse teile e-posti teel.
| Allalaaditud: korda
Tagasiside saatja
Tagasiside saatja suunab kogu teabe teie veebisaidil olevast tagasisidevormist otse teie e-posti aadressile. See väike skript töötleb kõik taotlused väga kiiresti.
| v.1.2 | Allalaaditud: korda
Lihtne PHP kontaktivorm
Lihtne, kuid turvaline PHP-skript veebihalduriga ühenduse võtmiseks, kasutades rämpsposti vältimiseks tagasisidevormi koos koodi kinnitamisega (CAPTCHA).
| v.2.1 | Allalaaditud: korda
PHP kontaktivorm (pildi kinnitusega)
Kontaktivorm, mis hoiab ära rämpsposti, paludes kasutajal sisestada pildil oleva turvakoodi. Kui kasutate väga lihtsat tagasisidevormi, leiavad rämpspostitajad varem või hiljem võimaluse teile reklaame automaatselt saata.
| Allalaaditud: korda
CW3 vormipost
Skripti on väga lihtne installida ja kohandada vastavalt teie saidi välimusele. Saate muuta tagasisidevormi suurust ja kirja edukal saatmisel kuvatava sõnumi teksti.
| v.3.30 | Allalaaditud: korda
reCAPTCHA kontaktivorm
See tasuta PHP tagasiside skript muudab külastajatelt meilide või tagasiside saamise palju lihtsamaks. Teie külastaja peab täitma vaid kõik vajalikud kontaktiväljad...
| v.1.4 | Allalaaditud: korda
phMailer
phMailer on väga lihtne PHP tagasiside skript, mis toetab failide manuseid tänu PHP keele sisseehitatud funktsioonile mail().