-
Q:
PHP & Ajax Contactformulier
Ik heb een contactformulier gemaakt.
Ik had hem zo gemaakt dat als je op submit drukt hij niet hoeft te refreshen.
Ik heb hem beveiligd met een rekensommetje.index.php
[code:1:8dd092c9d4]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Ajax contact form</title>
<script type="text/javascript" src="mootools.js"></script>
<script type="text/javascript">
window.addEvent(’domready’, function(){
$(’myForm’).addEvent(’submit’, function(e) {
new Event(e).stop();
var log = $(’log_res’).empty().addClass(’ajax-loading’);
this.send({
update: log,
onComplete: function() {
log.removeClass(’ajax-loading’);
}
});
});
});
</script>
</head>
<body>
<div id="log">
<div id="log_res">
</div>
</div>
<form id="myForm" action="send.php" method="get" name="myForm">
<div id="form_box"><p>Naam:</p>
<p><input type="text" name="first_name" value="" /></p>
<p>E-Mail:</p>
<p><input type="text" name="e_mail" value="" /></p>
<p>Bericht:</p>
<p><textarea name="message" cols="40" rows="5"></textarea></p>
<p><? require("ClassMathGuard.php"); MathGuard::insertQuestion(); ?></p><div class="hr">
</div><input type="submit" name="button" id="submitter" /></div>
</form>
</body>
</html>[/code:1:8dd092c9d4]send.php
[code:1:8dd092c9d4]<?phprequire("ClassMathGuard.php");
error_reporting(E_NOTICE);
function valid_email($str)
{
return ( ! preg_match("/^([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
}if($_POST[’first_name’]!=” && $_POST[’e_mail’]!=” && valid_email($_POST[’e_mail’])==TRUE && strlen($_POST[’message’])>30 && MathGuard :: checkResult($_REQUEST[’mathguard_answer’], $_REQUEST[’mathguard_code’]))
{
$to = ‘[email protected]’;
$headers = ‘From: ‘.$_POST[’e_mail’];
‘Reply-To: ‘.$_POST[’e_mail’];
‘X-Mailer: PHP/’ . phpversion();
$subject = "Mail van";
$message = htmlspecialchars($_POST[’message’]);
if(mail($to, $subject, $message, $headers))
{
echo ‘Dank u wel ‘.$_POST[’first_name’].’. Uw bericht is verstuurd, ik zal zo spoedig mogelijk antwoord geven, indien dat nodig is.’;
}
else {
echo "Het is niet gelukt om de mail te versturen, probeer het op een later moment opnieuw!";
}
}
else {
echo ‘Wilt u alstublieft alle velden invullen!
Dat u uw email-adres goed heeft ingevuld!
Dat uw bericht meer dan 30 tekens bevat!’;
}
?>[/code:1:8dd092c9d4]ClassMathGuard.php
Haal je hier vandaan!mootools.js
Haal je hier vandaan!Als er nog vragen zijn hoor ik het wel!
Je script is gevoelig voor Mail injection en HTML injection, door $_POST[‘e_mail’] en $_POST[‘first_name’] niet te beveiligen. En wat heeft het invullen van de naam voor nut, als deze toch niet wordt verzonden?
En je echo()t uiteindelijk een heleboel tekst, maar als ik het goed begrijp wordt die niet eens weergegeven…
Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.