3 berichten aan het bekijken - 1 tot 3 (van in totaal 3)
  • Q:
    Bijdrager
    kristennyheter

    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]<?php

    require("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!

    Bijdrager
    DouweM

    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…

    Bijdrager
    The JM

    “Op een later moment?”:P Beetje raar.

3 berichten aan het bekijken - 1 tot 3 (van in totaal 3)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.