sayfa yenilendiğinde php GetMethod kullanarak tekrarlanan çağrısı () devre dışı

2 Cevap php

I'm new to PHP and in order to learn the language and the concepts I'm working on a e-commerce website with a shopping cart, etc. In this site I have items, when an item is clicked, the id of the item is sent via the GET method to the shopping cart page. Using this id, I add the item to the shopping cart(table in db) and it works fine.

<a href="do_shoppingcart.php?id=<?php echo "$itm_id"; ?>">

The issue is; if the user clicks the refresh button, the item is added again to the shopping cart. Do you think that disabling the refresh button or F5 button is a good option? what must i do to prevent the user from adding the item to the shopping cart when the page is refreshed? In forms I've noticed that "(isset($_POST['Submit'])){}" is helpful, but for the GET method this doesn't work accordingly.

Senin yardım takdir edilmektedir.

2 Cevap

(CSRF saldırıları önlemek için de yararlı) güvenli yolu, form gizli alan olarak bir belirteç eklemektir. Bu belirteç henüz yoksa, sonra işleme komut, sadece veritabanına öğe eklemek ...

Belirteç böyle bir şey tarafından oluşturulmuş olabilir:

$token = sha1(uniqid());

Link eklenir:

echo '<a href="process.php?id='.$id.'&token='.$token;

Işlerken sonra, bu simge ile bir hat için veritabanını sorgulamak.

SELECT 1 FROM table WHERE token='abc....'

Bu sorgu bir sonuç döndürürse, başka bir şey işlemek yok ...

POST, İdempotent operasyonlar için rezerv GET ile yıkıcı eylemler yapmalıdır.