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.
- 2664 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
Ajax nelkul is frankon meg lehet oldani...
pl.:
php elejen egy if agba berakja az ellenorzest, es a kuld gomb sajat magat hivja meg pl.:1-es ertekkel amikoris lefut az ellenorzes, es ha jo elkuldi a mailt, ha nem ad egy hibauzenetet.
pch
--
http://www.buster.hu
--
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
Ezt szerintem nézd meg.
A mailcím érvényességéet pedig reguláris kifejezéssel ellenőrizd (ehhez ezt tudom adni).
- A hozzászóláshoz be kell jelentkezni
hol a küld gomb??
hol a input mező?
hol a form?
valahogy így:
<?
if ($x=='1')
{
ellenorzes
if ($ok)
{
küldöd
}
if (!$ok)
{
error message
}
}
?>
pch
--
http://www.buster.hu
--
- A hozzászóláshoz be kell jelentkezni
Bemásoltam, csak nem jelenik meg. Milyen tag kell, hogy sima szövegnek vegye?
- A hozzászóláshoz be kell jelentkezni
mit másoltál?
< form name="form" method="post" action="sajatmaga php&x=1" >
< input type='text' name='mail'>
< input .......
....
< input type="submit" value="Küldés" >
< /form>
ez kb a html része..
--
http://www.buster.hu
--
- A hozzászóláshoz be kell jelentkezni
Igen valami ilyesmit. Na de egyenlőre elég ennyi info. Este ezek alapján próbálkozom.
Köszi pch!
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Ha ragaszkodsz ehhez a megoldáshoz, akkor esetleg html redirect?
- A hozzászóláshoz be kell jelentkezni
<?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.
";
}
}
?>
- A hozzászóláshoz be kell jelentkezni