Kako da kreirate kontakt formu

  1. Početna
  2. Email
  3. Kako
  4. Kako
  5. Kako da kreirate kontakt formu

Ovde odradićemo dva scenarija. Prvi je onaj lakši a to je putem WordPress-a.
Kada je u pitanju wordpress postoji plugin za to i tu se nećemo previše baviti. Plugin je Contact Form 7.   Nakon instalcije i podešavanja morate da postaite u svom wordpressu SMTP konekciju kako bi vaši emailovi stizali bez problema. A to možete da uradite pomoću našeg drugog članka SMTP i WordPress.

Onaj drugi deo koji je “teži” jeste za HTML sajtove ili one koji imaju kontakt stranu koja je ručno urađena i ne koriste ni jedan CMS.

Pre svega potrebno je da skinete PHPMailer klikom na “Clone or downlaod” a zatim na “Download ZIP”.

Kao na slici ispod

Nakon ovoga je potrebno da taj zip fajl postavite na svoj hosting nalog.

cPanel > File Manager > otvorite public_html folder i unutar njega opcija “upload”.

Kada ste završili upload onda desni klik na zip fajl i extract kao na slici:

Sada kada smo i to raspakovali onda je potrebno da uradimo našu stranu.
Naš primer ima sledeća polja:

<form action="kontaktforma.php" method="post">
    Ime:<br>
    <input type="text" id="fname" name="firstname" placeholder="Your name.."><br>
    Prezime:<br>
    <input type="text" id="lname" name="lastname" placeholder="Your last name.."><br>
    Email:<br>
    <input type="text" id="email" name="email"><br>
    Text:<br>
    <textarea id="tekst" name="tekst" placeholder="Write something.." style="height:200px"></textarea><br>
    <input type="submit" value="Pošalji"><br>
  </form>

Vaša kontakt forma svakako izgleda drugačije i ima drugačije nazive input elemanata i više ili manje polja, stim nemojte bukvalno da copy/paste već mini podešavanja koja su vezana za vašu kontakt formu.

Ključna stvar ovde jeste opcija u <form> a to je “action=”kontaktforma.php” a to znaci da kada se klikne na “Pošalji” time se šalje sadržaj polja na tu php stranu u našem slučaju kontaktforma.php (može biti ista strana a može biti i eksterna).

Sada ide podešavanj SMTP i PHPmailera za podatke koje smo poslali pomoću HTML kontakt forme.

PHPMailer izgleda ovako:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer-master/src/Exception.php';
require 'PHPMailer-master/src/PHPMailer.php';
require 'PHPMailer-master/src/SMTP.php';
    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->SMTPDebug = 0;
    $mail->Host = 'mail.vasdomen.tld';
    $mail->Port = 25;
    $mail->SMTPAuth = true;
    $mail->Username = 'email@vasdomen.rs'; //<- unosite vašu email adresu
    $mail->Password = 'mojalozinka'; //<- unosite lozinku od te email adrese
    $mail->setFrom($_POST['email'], 'First Last'); //<- od koga je email 1*
    $mail->addReplyTo($_POST['email'], 'First Last'); //<- od koga je email 2*
    $mail->addAddress('info@webhostingsrbija.rs', 'John Doe'); //<- od koga je email 3*
    $mail->Subject = 'Kontakt sa sajta'; //<- od koga je email 4*

    $mail->AltBody = $_POST['tekst']; //<- od koga je email 5*
    $mail->Body    = $_POST['tekst']; //<- od koga je email 6*
    $mail->IsHTML(true);
    if (!$mail->send()) {
        echo 'Mailer Error: ' . $mail->ErrorInfo;
    } else {
        echo 'Message sent!';
    }

Sada malo pojašnjenje u vezi ovog koda:
1* – $_POST[’email’] je email adresa koju je vaš posetilac uneo iz kontakt forme ovo [’email’] je u stvari <input name=’email’….> zavisno od vase kontakt forme kako ste nazvali taj input unos.
2* – U ovom redu kada vi kliknete na replay u svom email klijentu ko dobija odgovor uvek je isto kao i onaj ko je poslao kao u našem primeru.
3* – U ovom redu unosite vašu email adresu odnosno ko prima email iz kontakt forme
4* – Naslov ovde može i da stoji $_POST[naslov’] odnosno HTML <input name=’naslov’…> zavisno od vase kontakt forme. Mi u nasem primeru nismo imali polje za naslov.
5* – U ovom redu je tekst bez html-a već čist samo tekst.
6* – Ovde je moguće da se i HTML ubaci u sam body emaila jer je označeno odmah u sledećem redu da je email HTML (šta pod ovim podrazumevam wordpress članak može slikovito da vam pokaze OVDE)

Nakon ovoga je ostalo samo da izmenite tekst “Message sent!” i error u vaše šta vi želite da pišete i to je sve.

Ispod možete da vidite kako smo mi i HTML formu i PHP stavili u jednom fajlu koji se zove kontaktforma.php

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer-master/src/Exception.php';
require 'PHPMailer-master/src/PHPMailer.php';
require 'PHPMailer-master/src/SMTP.php';
if(isset($_POST['email']))
{
    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->SMTPDebug = 0;
    $mail->Host = 'mail.vasdomen.tld';
    $mail->Port = 25;
    $mail->SMTPAuth = true;
    $mail->Username = 'email@vasdomen.rs';
    $mail->Password = 'mojalozinka';
    $mail->setFrom($_POST['email'], $_POST['firstname']." ".$_POST['lastname']);
    $mail->addReplyTo($_POST['email'], $_POST['firstname']." ".$_POST['lastname']);
    $mail->addAddress('vasa@emailadresa.tld', 'Marko Markovic');
    $mail->Subject = 'Kontakt sa sajta';

    $mail->AltBody = $_POST['tekst'];
    $mail->Body    = $_POST['tekst'];
    $mail->IsHTML(true);
    if (!$mail->send()) {
        echo 'Mailer Error: ' . $mail->ErrorInfo;
    } else {
        echo 'Message sent!';
    }
}
?>
<div class="container">
<form action="kontaktforma.php" method="post">
    Ime:<br>
    <input type="text" id="fname" name="firstname" placeholder="Your name.."><br>
    Prezime:<br>
    <input type="text" id="lname" name="lastname" placeholder="Your last name.."><br>
    Email:<br>
    <input type="text" id="email" name="email"><br>
    Text:<br>
    <textarea id="tekst" name="tekst" placeholder="Write something.." style="height:200px"></textarea><br>
    <input type="submit" value="Pošalji"><br>
  </form>
</div>

Mala napomena, ukoliko nakon postavljanja forme vam stiže veći broj spam mailova na vašu adresu potrebno je da postavite i https://www.google.com/recaptcha/intro/v3.html

Djordje
Share