formulier (HTML/PHP)
<!DOCTYPE html>
<html>
<head>
<meta name="robots" content="noindex">
<title>Saldochecker icm cookie</title>
<link rel="stylesheet"href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="form.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/latest/js.cookie.min.js" integrity="sha512-iewyUmLNmAZBOOtFnG+GlGeGudYzwDjE1SX3l9SWpGUs0qJTzdeVgGFeBeU7/BIyOZdDy6DpILikEBBvixqO9Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
jQuery(document).ready(function($) {
$("#reset").click(function(){
Cookies.remove('codes');
Cookies.remove('bedrag');
location.reload();
});
});
</script>
</head>
<body>
<input type="button" name="reset" id="reset" value="resetten">
<span class="text-danger"><?php echo '€ '.number_format($_COOKIE['bedrag'], 2, ',', '.'). '';?></span>
<div class="col-sm-6 col-sm-offset-3">
<h1>Bedrag optellen</h1>
<form action="sbmtfrm.php" method="POST">
<div id="code-group" class="form-group">
<label for="code">Code</label>
<input type="text" class="form-control" id="code" name="code" placeholder="Voer de code in" />
</div>
<button type="submit" class="btn btn-success">
Verzenden
</button>
</form>
</div>
</body>
</html>
PHP actions (sbmtfrm.php)
<?php
$errors = [];
$data = [];
// Bedrag => Code
$codes = array(
"1234" => "500",
"2345" => "600",
"3456" => "700",
"4567" => "800",
"5678" => "900",
"6789" => "1000",
"7890" => "1100",
"8901" => "1200",
"9012" => "1300",
"0123" => "1400",
"1245" => "1500",
"2356" => "1600",
"3467" => "1700",
"4578" => "1800",
"5689" => "1900",
"6790" => "2000",
"7891" => "2100",
"8902" => "2200",
"9013" => "2300",
"0124" => "2400",
"1235" => "2500",
"2346" => "600",
"3457" => "700",
"4568" => "800",
"5679" => "900",
"6780" => "1000",
"7892" => "1100",
"8903" => "1200",
"9014" => "1300",
"0125" => "1400",
"0712" => "2000000",
"9837" => "1000000",
"3209" => "50000",
"2103" => "30000",
"0282" => "20000",
"0329" => "3000000",
"2331" => "0",
"8521" => "1500000",
"0912" => "100000",
"6382" => "65000",
"4218" => "400000",
"7201" => "5000000",
"1022" => "150000",
"5892" => "300000",
"3392" => "50000",
"0291" => "500000",
);
$codes_formatted = implode("|", array_keys($codes));
$codecheck = preg_match('/\b('.$codes_formatted.')\b/', $_POST['code']);
if(!isset($_COOKIE['bedrag'])) {
$cookiebedrag = 0;
} else {
$cookiebedrag = $_COOKIE['bedrag'];
};
if (empty($_POST['code'])) {
$errors['code'] = 'code is required.';
} elseif(empty($codecheck)){
$errors['code'] = 'code is onjuist';
} elseif (strpos($_COOKIE['codes'], $_POST['code']) !== false) {
$errors['code'] = 'Deze code is al gebruikt';
}
if (array_key_exists($_POST['code'], $codes)) {
$cookiebedrag += $codes[$_POST['code']];
}
if (!empty($errors)) {
$data['success'] = false;
$data['errors'] = $errors;
} else {
$data['success'] = true;
if($_COOKIE['codes']):
$data['cookie'] = $_COOKIE['codes'].'|'.$_POST['code'];
else:
$data['cookie'] = $_POST['code'];
endif;
$data['bedrag'] = $cookiebedrag;
$data['message'] = 'Success!';
}
echo json_encode($data);
?>
JS (form.js)
$(document).ready(function () {
$("form").submit(function (event) {
$(".form-group").removeClass("has-error");
$(".help-block").remove();
var formData = {
name: $("#code").val(),
code: $("#code").val(),
};
$.ajax({
type: "POST",
url: "sbmtfrm.php",
data: formData,
dataType: "json",
encode: true,
})
.done(function (data) {
console.log(data);
if (!data.success) {
if (data.errors.code) {
$("#code-group").addClass("has-error");
$("#code-group").append(
'<div class="help-block">' + data.errors.code + "</div>"
);
}
} else {
$("form").html(
'<div class="alert alert-success">' + data.message + ' bedrag = ' + data.bedrag + "</div>"
);
$(".bedrag").html(
'<span class="text-danger">' + data.bedrag + "</span>"
);
Cookies.set('codes', data.cookie);
Cookies.set('bedrag', data.bedrag);
location.reload();
}
});
event.preventDefault();
});
});
#AJAX #checks #cookie #form #js #php