PHP form küldés

Sziasztok,

Nemrég kezdtem el PHP-vel foglalkozni. Van egy majdnem kész HTML oldalam és szeretnék rá egy tök egyszerű form küldést. A felhasználó kitölti a nevét, e-mail címét, megírja a levelet és elküldi egy fix címre.

Amit szeretnék, az illető rákattint a küld gombra, egyszerű ellenőrzés után elmegy a levél. A mail() függvénnyel elég egyszerű a levél küldés, működik is.

Hogyan tudom azt megoldani, hogy közben látszódjon az eredeti oldal és azon jelenljen meg egy üzenetablak ha pl. hibás címet adott meg? A PHP szkriptet én a HTML oldalba írtam bele majd átneveztem PHP-nek, de így mindig lefut. Hogyan tudom neki megadni, hogy csak a küld gombra való rákattintás után küldje el? Illetve mi az általánosan elfogadott módszer? Külön PHP file-ba teszitek a levélküldő kódot?

Köszi a segítséget.

Hozzászólások

Amit te szeretnél, arra legjobb az AJAX. Egy javascript függvénnyel ellenőrzöd, hogy ki vannak -e töltve az adatok, amikor a Küldésre kattint a felhasználó (OnClick esemény). Ha formailag helyesen van kitöltve, akkor Javascripten (AJAX) keresztül meghívod a feldolgozó php fájlt (igen, külön fájl) és lekezeled az esetleges hibákat. Ha pedig sikeres a küldés, akkor meg kiírsz valami üzenetet vagy átirányítod a felhasználót.

Google:
check.js
ajax js

Valami ilyesmivel próbálkoztam én is, csak hibásan:

Név:

E-mail:

Telefon:

Üzenet:

<?php

If ($_POST['submit']=="Elso gomb")
{
// mail("matyas@tanulgat.eu","PHP levél küldése",$Szoveg);
function ell()
{
If (strlen($Email)<6)
{
print "

";
print "alert('Túl rövid E-mail címet adott meg!')";
print "

";
}
}
ell();
}
?>

A külön feldolgozó file a megnyílásakor eltünteti az eredeti oldalamat és mivel abban csak a feldolgozó kód van ezért fehér alapon megjeleníti a hibaüzenetet (habár ez nem tragédia).
Végülis a PHP-ban tökéletesen le tudom ellenőrizni az adatokat, csak azt nem tudom ezután hogyan juttassam vissza az illetőt az eredeti html oldalamra, hogy kijavíthassa a hibákat.

<?php
if (!isset($_POST['submit']) || $_SERVER['REQUEST_METHOD'] != "POST") {
exit("

You did not press the submit button; this page should not be accessed directly.

");
} else {
$exploits = "/(content-type|bcc:|cc:|document.cookie|onclick|onload|javascript|alert)/i";
$profanity = "/(beastial|bestial|blowjob|clit|cock|cum|cunilingus|cunillingus|cunnilingus|cunt|ejaculate|fag|felatio|fellatio|fuck|fuk|fuks|gangbang|gangbanged|gangbangs|hotsex|jism|jiz|kock|kondum|kum|kunilingus|orgasim|orgasims|orgasm|orgasms|phonesex|phuk|phuq|porn|pussies|pussy|spunk|xxx)/i";
$spamwords = "/(viagra|phentermine|tramadol|adipex|advai|alprazolam|ambien|ambian|amoxicillin|antivert|blackjack|backgammon|texas|holdem|poker|carisoprodol|ciara|ciprofloxacin|debt|dating|porn)/i";
$bots = "/(Indy|Blaiz|Java|libwww-perl|Python|OutfoxBot|User-Agent|PycURL|AlphaServer)/i";

if (preg_match($bots, $_SERVER['HTTP_USER_AGENT'])) {
exit("

Known spam bots are not allowed.

");
}
foreach ($_POST as $key => $value) {
$value = trim($value);

if (empty($value)) {
exit("

Empty fields are not allowed. Please go back and fill in the form properly.

");
} elseif (preg_match($exploits, $value)) {
exit("

Exploits/malicious scripting attributes aren't allowed.

");
} elseif (preg_match($profanity, $value) || preg_match($spamwords, $value)) {
exit("

That kind of language is not allowed through our form.

");
}

$_POST[$key] = stripslashes(strip_tags($value));
}

if (!ereg("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,6})$",strtolower($_POST['email']))) {
exit("

That e-mail address is not valid, please use another.

");
}

$recipient = "YOU@YOUR-EMAIL.COM";
$subject = "Contact Form Mail";

$message = "You've received an e-mail through your website mail form: \n";
$message .= "Name: {$_POST['name']} \n";
$message .= "E-mail: {$_POST['email']} \n";
$message .= "Country: {$_POST['country']} \n";
$message .= "Feedback: {$_POST['comments']} \n";

$headers = "From: YOUR WEBSITE NAME <$recipient> \n";
$headers .= "Reply-To: <{$_POST['email']}>";

if (mail($recipient,$subject,$message,$headers)) {
echo "

Thank you! Your mail was successfully sent to the webmaster. Thank you for your time.

";
} else {
echo "

Sorry, there was an error and your mail was not sent. Please find an alternative method of contacting the webmaster.

";
}
}
?>