1. #1

    Registered
    24/10/13
    Location
    Aalst
    Posts
    3
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0

    Post reservatiesysteem met bevestigingsmail

    Hallo iedereen!

    Zoals de titel een beetje aantoont maak ik een reservatie systeem in HTML/PHP.
    Er wordt een HTML form ingevuld en die waarden worden doorgegeven naar de eerste .php file (reservation-send.php).
    Die .php file maakt een emailbericht waarin enkele waarden van de form inkomen en de url link om te bevestigen (incl. hash code).
    De mail en link wordt verstuurd naar iemand van het restaurant om te bevestigen (klikken op de url link).
    Wanneer die link wordt geklikt, wordt er een 2de .php file aangesproken (bevestiging.php).
    Die file controleert of de hash code en email correct zijn, indien dit zo is wordt er opnieuw een mail verzonden naar degene die de reservatie maakte met de bevestiging van de reservatie.

    reservation-send.php

    PHP Code:
    <?php
    require_once 'inc/securimage/securimage.php';

    /////////////////////////////////////
    // Change this email address ////////
    $email "test@test.be"//dit express zo gemaakt voor deze post

    /////////////////////////////////////

    $required = array('day''month''year''hour''minutes''ampm''name''email''captcha''phone''amount');
    $response = array('status' => 'failed''errors'=>array());

    if(isset(
    $_POST['reservation'])) {
        foreach(
    $_POST['reservation'] as $field => $value) {
            
    //check required field if empty
            
    if($value == '' && in_array($field$required)) {
                
    $response['errors'][$field] = $field;
            }
        }

        
    //validate email
        
    if(!isset($response['errors']['email'])) {
            if(!
    filter_var($_POST['reservation']['email'], FILTER_VALIDATE_EMAIL)) {
                
    $response['errors']['email'] = 'email';
            }
        }

        
    //validate captcha
        
    if(!isset($response['errors']['captcha'])) {
            
    $securimage = new Securimage();
            if (
    $securimage->check($_POST['reservation']['captcha']) == false) {
                
    $response['errors']['captcha'] = 'captcha';
            }
        }

    }

    if(empty(
    $response['errors'])) {
        
    $response['status'] = 'success';

        
    $data $_POST['reservation'];

        
    //Generate email link

            //save mail of who made the reservation - get from form
            
    $email_reservering =$data['email'];

            
    //generate hash code
            
    $hash md5($email_reservering);

            
    //generate link with hash code
            
    $link "http://mijndomein.be/bevestiging.php?email=”.urlencode($email_reservering).”&hash=$hash";

        
    $headers "";
        
    $message .= "Dag Lode en Eva, via de website kregen jullie een nieuwe reservatie, gelieve de persoon zo snel mogelijk een bevestigingsmail te sturen!";
        
    $message .= "\n\n";
        
    $message $data['message'];
        
    $message .= "\n\n";

        
    $message .= " Telefoon: " $data['phone'];
        
    $message .= "\n\n";
        
    $message .= " Lunch/Diner: " $data['booking-type'];
        
    $message .= "\n\n";
        
    $message .= " Aantal personen: " $data['amount'];
        
    $message .= "\n\n";
        
    $message .= " Email: " $data['email'];

        
    $message .= "\n\n";
        
    $message .= " Datum: " $data['day'];
        
    $message .= "\n\n";
        
    $message .= " Maand: " $data['month'];
        
    $message .= " " $data['year'];
        
    $message .= "\n\n";
        
    $message .= " Tijdstip: " $data['hour'] . " " $data['minutes'] . " " $data['ampm'];
        
    $message .= "\n\n\n\n";
        
    $message .= "<a href='".$link."'>Bevestig</a>";

        
    $subject 'Nieuwe reservatie via de website';
        
    $headers 'From: '$data['email']. "\r\n" .'Reply-To: '$data['email']. "\r\n" .'X-Mailer: PHP/' phpversion();

        if (
    mail($email$subject$message$headers)) {

        } else {
            
    $response['status'] = 'failed';
        }
    }

    echo 
    json_encode($response);
    Bevestiging.php

    PHP Code:
    <?php

    //retrieve email and hash code from link
    $email_reservering urldecode($_GET['email_reservering']);
    $hash $_GET['hash'];

    //check if hash code matches

    if (md5($email_reservering) == $hash)
    {
        
    //succes    
        
    $headers "";
        
    $message .= "reservering bevestigd!";
        
    $message .= "\n\n";

        
    $subject 'Bevestiging reservering';

        if (
    mail($email$subject$message$headers)) {

        } else {
            
    $response['status'] = 'failed';
        }
    }
    else
    {
        
    //error
        
    echo "error!";
    }

    ?>
    Output URL

    Volgens mij loopt het mis door een fout in het aanmaken van de url link.
    Ik krijg steeds "fout!" als er wordt op geklikt.
    Zie output link voor de output van de mail.

    Alvast bedankt!

    Voor verdere vragen shoot maar eh!
    no votes  

  2. #2
    CrushTheButton's Avatar
    Registered
    27/03/12
    Location
    Knesselare
    Posts
    425
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Je gebruikt de verkeerde naamgeving om je parameter op te halen. In je URL gebruik je 'email' vervolgens probeer je dan 'email_reservering' op te halen.

    Hier is een afbeelding die het probleem in het geel markeert.
    http://rubenvermeulen.be/p/easyImage...ads/img_43.JPG
    Portfolio website: http://www.rubenvermeulen.be/
    Nederlandstalige PC Multi-Gaming Clan: http://www.soldiersoffreedom.be/
    no votes  

  3. #3

    Registered
    24/10/13
    Location
    Aalst
    Posts
    3
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    dat is geen parameter eh maar gewoon tekst die een URL wordt..
    volgens mij klopt dat hoor.

    Heb al 2 dingen aangepast:

    - $link = "http://lanes.be/baronie/bevestiging.php?email=".urlencode($email_reserveri ng)."&hash=".$hash;
    => qoutes verzet

    - $email_reservering = urldecode(['email_reservering']);
    => Daarnaast is een urldecode() op $_GET niet nodig, urldecode() wordt al automatisch toegepast op superglobals als $_GET en $_POST.
    no votes  

  4. #4
    CrushTheButton's Avatar
    Registered
    27/03/12
    Location
    Knesselare
    Posts
    425
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Je snapt het niet helemaal denk ik.

    Je maakt je URL aan met de email en hash parameter.

    voorbeeld.com/bevestiging.php?email=waarde&hash=waarde

    Vervolgens wil je in je bevestigingsbestand de parameter email_reservering ophalen, maar die bestaat niet in je URL hierboven.
    Portfolio website: http://www.rubenvermeulen.be/
    Nederlandstalige PC Multi-Gaming Clan: http://www.soldiersoffreedom.be/
    no votes  

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in