Stworzyłem skrypt w php który wyciąga dane z formularza i potem funkcją mail() wysyła je na skrzynkę pocztową. Funkcja ta jest osadzona narazie w innym pliku niż formularz co rozwiązuje częściowo mój problem jednak chciałbym żeby był osadzony w tym samym pliku. Chodzi o to żeby metodą POST wysłać dane do tego samego pliku i żeby kiedy użytkownik wchodzi na stronę to na wstępie nie dostawał komunikatu z błędem jeszcze zanim zdąży wypełnić pola i wysłać je.
Treść błędu to:
Notice: Undefined index: tresc in C:\...\mail.php on line 5
Notice: Undefined index: mail in C:\...\mail.php on line 6
Notice: Undefined index: telefon in C:\...\mail.php on line 7
Formularz
<form action="mail.php" method="post" id="formulaz">
<input class="email" name="mail" type="text" placeholder="e-mail" style="width: 100%"></br>
<input class="email" type="text" name="telefon" placeholder="telefon" style="width: 100%"></br>
<textarea class="message" name="tresc" placeholder="wiadomość"></textarea>
<input class="send" type="submit" value="wyślij">
</form>
Skrypt
//Zmienne przeflitrowane, przesłane od użytkownika
$tresc = htmlspecialchars(trim($_POST['tresc']));
$mail = htmlspecialchars(trim($_POST['mail']));
$telefon = htmlspecialchars(trim($_POST['telefon']));
//Stałe zdefiniowane
$to = 'exampl@gmail.com';
$subject = 'TEST';
$headers = "Content-type: text/html; charset=utf-8\r\n";
// Skrypt walidujący i wysyłający maila
if (isset($to)){
if (!isset($tresc) and !isset($mail ) and !isset($telefon) ){
}
$error = false;
//Sprawdzam czy istnieje ciasteczko
if (isset($_COOKIE['send'])){
$error = $error ='Odczekaj '.($_COOKIE['send']-time()).' sekund przed wysłaniem kolejnej wiadomości';
}
//Walidacja pola E-mail
if (empty($mail)){
$error = "Nie wypełniłniono pola E-mail!";
}
elseif (strlen($mail) > 40){
$error = "E-mail nie może prekroczyć 40 znaków!";
}
elseif (!filter_var($mail, FILTER_VALIDATE_EMAIL)){
$error = "Podano niepoprawyny E-mail!";
}
//Walidacja pola Telefon
if (empty($telefon)){
$error = "Nie wypełniłniono pola Telefon";
}
elseif (strlen($telefon) > 15){
$error = "Twój Telefon jest za długi. Może posiadać maksymalnie 15 znaków!";
}
//Walidacja pola wiadomość
if (empty($tresc)){
$error = "Nie wypełniono pola Wiadomość!";
}
elseif (strlen($tresc) > 400){
$error = "Wiadomość przekroczyła maksymalną liczbę 400 znaków!";
}
//Wysyłanie wiadomości jeśli testy się powiodły i tworzenie ciasteczka
if ($error == false){
mail($to, $subject, $tresc."<br><br>"."<b>Dane kontaktowe:</b> <br>"."e-mail: $mail <br>"."telefon: $telefon", $headers);
setcookie("send", time()+60, time()+60);
$error= "Twoja wiadomość została wysłana!";
}
}
echo '<div class="komunikat" >'.$error.'</div>';