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!