pošiljanje obrazca na email

Pozdravljeni!

Mene pa zanima kako nardiš da k maš na intrnetni strani kkšn obrazc za izpovnt da pol k kliknš pošlji da ti to pošle na mail.

14 odgovorov

//offtopic:
jaz prodajam knjige kjer so vsi taki primeri razloženi not - idealno za začetnike :)

En osnoven primer: http://www.phpeasystep.com/phptu/8.html

Zanima me kako bi naredil, da bi pri spodnjem php obrazcu php ločil v drugo datoteko.

koda:
<?php
if ($POST["email"]<>'') {
$ToEmail = 'example@damain.com';
$EmailSubject = 'Site contact form ';
$mailheader = "From: ".$
POST["email"]."\r\n";
$mailheader .= "Reply-To: ".$POST["email"]."\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$MESSAGE
BODY = "Name: ".$POST["name"]."<br>";
$MESSAGE
BODY .= "Email: ".$POST["email"]."<br>";
$MESSAGE
BODY .= "Comment: ".nl2br($POST["comment"])."<br>";
mail($ToEmail, $EmailSubject, $MESSAGE
BODY, $mailheader) or die ("Failure");
?>
Your message was sent
<?php
} else {
?>
<form action="test.php" method="post">
<table width="400" border="0" cellspacing="2" cellpadding="0">
<tr>
<td width="29%" class="bodytext">Your name:</td>
<td width="71%"><input name="name" type="text" id="name" size="32"></td>
</tr>
<tr>
<td class="bodytext">Email address:</td>
<td><input name="email" type="text" id="email" size="32"></td>
</tr>
<tr>
<td class="bodytext">Comment:</td>
<td><textarea name="comment" cols="45" rows="6" id="comment" class="bodytext"></textarea></td>
</tr>
<tr>
<td class="bodytext"> </td>
<td align="left" valign="top"><input type="submit" name="Submit" value="Send"></td>
</tr>
</table>
</form>
<?php
};
?>

sem že probaval da bi naredil pri action povezavo na drugo datoteko kjer bi bil le zgornji php (do "Your message was sent") pa ni delovalo. :(

tole daš v naprimer sent_email.php

<?php
$ToEmail = 'example@damain.com';
$EmailSubject = 'Site contact form ';
$mailheader = "From: ".$_POST["email"]."\r\n";
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$MESSAGE_BODY = "Name: ".$_POST["name"]."<br>";
$MESSAGE_BODY .= "Email: ".$_POST["email"]."<br>";
$MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"])."<br>";
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure");
print "Your message was sent";
?>

Tole daš v email.php

<form action="sent_email.php" method="post">
<table width="400" border="0" cellspacing="2" cellpadding="0">
<tr>
<td width="29%" class="bodytext">Your name:</td>
<td width="71%"><input name="name" type="text" id="name" size="32"></td>
</tr>
<tr>
<td class="bodytext">Email address:</td>
<td><input name="email" type="text" id="email" size="32"></td>
</tr>
<tr>
<td class="bodytext">Comment:</td>
<td><textarea name="comment" cols="45" rows="6" id="comment" class="bodytext"></textarea></td>
</tr>
<tr>
<td class="bodytext">&nbsp;</td>
<td align="left" valign="top"><input type="submit" name="Submit" value="Send"></td>
</tr>
</table>
</form>

Poskusi in sporoči

Hvala Gogy zdei dela :) Me pa še zanima če kdo ve kako bi naredu da bi se obvestilo (Your message was sent) izpisalo v div-u pod formo?

saj celotno kodo lahko postaviš v ta div o katerem govoriš :)

Bodi pa pozoren pri tej skripti, saj jo brez težav izrabijo za razpošiljanje spam-a s tvojega naslova ali pa vsaj tvojega IP naslova :) tvoja skripta je na ravni aplikacije LuknjaTM

Kako pa bi lahko zaščitil skripto, da se nebi zgodilo kaj takega?

ma kdo kakšen nasvet?

Preveri, če je $_POST["email"] res email.

function isEmail($email) {
    return eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email);
}

Ker header emaila sestavljaš s $_POST spremenljivko, lahko kdorkoli "dopolni" email header z dodatnimi CC, BCC emaili.

Še večja luknja bi pa bila, če bi imel $ToEmail = $POST["toemail"];

A mam prav? :)

Kako pa bi neredil da se header emaila nebi dalo spreminjati, ker rabim zelo zanesljiv sistem. :)