Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Formularz kontaktowy, samoczynne wysyłanie ?
Forum PHP.pl > Forum > Przedszkole
szopik
Witam, mam taki dość nietypowy problem chyba. Stowrzyłem prosty formularz kontaktowy, wpisuje sie imie nazwisko adres email oraz treść, wszystko ładnie działa maile przychodzą poprawnie, jednak zauważyłem coś dziwnego otóż kilka razy dziennie dostaje puste maile, tzn. niewypełniony formularz. I nie wiem czy to wina formularza czy moze braku zapezpieczeń przed wysłaniem go z pustymi polami, ma jedno zapezpieczenie tzn chodzi o podanie poprwanej składni adresu e-mail. Ponizej wklejam kod, prosze o pomoc czy formularz jest źle skonstruowany oraz czy ktoś spotkal się z podobnym problemem i co może być przyczyną takiego zachowania.

Strona na ktorej umieczony jest formularz(kontakt.html):
<h2>Formularz kontaktowy</h2>
<form action="kontakt.php" onsubmit='return sprawdz_email(this);' method="post">

<div class="formularz">
<label class="kontakt" for="fImie">Imię</label>
<input id="fImie" name="fImie" class="text" type="text" />
</div>
<div class="formularz">
<label class="kontakt" for="fNazwisko">Nazwisko</label>
<input id="fNazwisko" name="fNazwisko" class="text" type="text" />
</div>
<div class="formularz">
<label class="kontakt" for="fMail">E-mail</label>
<input id="fMail" name="fMail" class="text" type="text" />
</div>
<div class="formularz">
<label class="kontakt" for="fText">Treść</label>
<textarea id="fText" name="fText" cols="40" rows="10"></textarea>
</div>

<div class="formularz">
<input id="fSubmit" name="fSubmit" class="submit" type="image" src="images/form_wyslij.gif" value="Wyślij" />
</div>

</form>


Kod php do jego obsługii(kontakt.php):


<body>
<?php
$mail = "xxx@xxx.pl";
$fImie=$_POST['fImie'];
$fNazwisko=$_POST['fNazwisko'];
$fMail=$_POST['fMail'];
$fText=$_POST['fText'];


$tresc = "
Imie: $fImie
<br>Nazwisko: $fNazwisko
<br>Treść: $fText
";

$nag = "From: $fMail\n";
$nag .= "MIME-Version: 1.0\n";
$nag .= "Content-Type: text/html;\n";
$nag .= "\tcharset='utf-8'\n";
$nag .= "Content-Transfer-Encoding: 8bit\n\n";
if( mail("$mail", "Formularz kontaktowy", $tresc, $nag))
echo "<div id='mail_kontakt'><p><center>Dziękujemy za wysłanie formularza.</center></p></div>
<meta http-equiv='refresh' content='3;url=kontakt.html' />
";
else
echo "<div id='mail_kontakt'><p><center>BŁĄD exclamation.gif ! Nie wysłano formularza, prosze spróbować ponownie!</center></p></div>
<meta http-equiv='refresh' content='3;url=kontakt.html' />
";
?>

</body>
nevt
Pomogłoby, gdybyś pokazał kod tej funkcji: sprawdz_email(this)

Ale wystarczy też, jak zrobisz dodatkową walidację w PHP, sprawdź czy któraś ze zmiennych przekazywanych przez $_POST nie jest pusta i wtedy nie wysyłaj e-maila...

Pozdrawim.
zakręcony
dzieje sie tak ponieważ nie masz zabezpieczeń w pliku odpowiedzialnym za wysłanie (kontakt.php)
jak wpiszesz adrses.pl/kontakt.php to będzie wysyłać meila z pustymi danymi
samo zabezpieczenia na kontakt.html nie wystarczy (choć JS to nie zabezpieczenie)
envp
no to użyj jakiegoś uniqid() w sesji i po problemie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.