Ada 3 cara untuk mengatasinya:
- Transfer info maksimal ke front-end
- Periksa kapan pengguna mengirim
- Pemeriksaan data asinkron, seperti
Jquery
ajax
Transfer info maksimal ke front-end
Cukup tempatkan info maksimal Anda ke beberapa area tersembunyi, dan gunakan javascript untuk mendapatkan dan memeriksanya.
function check(obj){
var max = obj.getAttribute("data-max");
if(parseInt(obj.value) > parseInt(max)){
alert("Amount out of max!");
}
}
<input name="amount" value="0" data-max="3" onkeyup="check(this);"/>
Namun cara ini tidak disarankan dan harus dihindari, karena pengguna dapat memperoleh data penyimpanan Anda dengan memeriksa kode sumber.
Periksa kapan pengguna mengirim
Periksa jumlah dengan nilai maksimal di sisi server, yang menyebabkan pengalaman pengguna yang buruk.
Pemeriksaan data asinkron
Ini sebagian besar direkomendasikan dan digunakan, yang mendapatkan data secara tidak sinkron. Anda dapat mencoba jquery
.
Dengan asumsi lang sisi server Anda adalah php
, Anda dapat membuat file checkMax.php
:
<?
$amount = $_POST["amount"];
$item_id = $_POST["item_id "];
/* get your max data from database using item_id, then assign $max
...
*/
echo $amount > $max ? 1 : 0
Kemudian Anda dapat memeriksa jumlah dengan jquery ajax.
<input name="amount" class="amount" data-id="1" value="0"/>
$(".amount").change(function(){
var amount = $(this).val();
var item_id = $(this).attr("data-id");
$.post("checkMax.php", {"amount": amount, "item_id": item_id}, function(data){
if(data == "1")alert("Amount out of Max!");
});
});