刷新页面时,在php中使用getmethod()禁用重复调用

刷新页面时,在php中使用getmethod()禁用重复调用,php,shopping-cart,getmethod,Php,Shopping Cart,Getmethod,我是PHP新手,为了学习PHP语言和概念,我正在开发一个带有购物车的电子商务网站,等等。 在这个站点中,我有一些物品,当点击物品时,物品的id通过GET方法发送到购物车页面。使用这个id,我将项目添加到购物车(db中的表),它工作正常 <a href="do_shoppingcart.php?id=<?php echo "$itm_id"; ?>"> 您应该使用POST执行破坏性操作,保留GET以进行幂等运算。最安全的方法(也有助于防止CSRF攻击)是将令牌作为隐藏字段

我是PHP新手,为了学习PHP语言和概念,我正在开发一个带有购物车的电子商务网站,等等。 在这个站点中,我有一些物品,当点击物品时,物品的id通过GET方法发送到购物车页面。使用这个id,我将项目添加到购物车(db中的表),它工作正常

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

您应该使用POST执行破坏性操作,保留GET以进行幂等运算。

最安全的方法(也有助于防止CSRF攻击)是将令牌作为隐藏字段添加到表单中。然后,在处理脚本中,仅当该令牌不存在时才将该项添加到数据库中

令牌可以通过以下方式创建:

$token = sha1(uniqid());
附加到您的链接:

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

如果此查询返回一个结果,请不要处理其他不一定有用的内容。

。用户仍然可以刷新页面,然后同意重新发送数据……浏览器警告您将重复上一个操作。它不是为了得到,因为这些应该是非破坏性的。好吧,有足够多的人可能会误解这一点。只要看看那些你可能知道的对技术不太感兴趣的人,他们只需单击“确定”即可。这仍然可以防止你的用户将破坏性URL添加到书签中(在遗留应用程序中看到这种情况:用户将URL设置为其主页),我应该帮助他们,仅仅添加令牌无助于防止CSRF攻击。还需要做一点,但这又是另一个话题…@Franz-我没有在shoppingcart页面中使用表单,我使用的是通过GET方法发送的id。这只是一个简单的脚本,也很好。只需在URL中添加一个标记即可。@Franz对不起,我是PHP新手。我必须怎么做?Thnx@Franz-谢谢你,我找到了另一种方法,我认为它更简单。我将isset函数应用于会话变量并确定状态。在此基础上执行相应的脚本。:)你的购物车桌子是什么样子的?
SELECT 1 FROM table WHERE token='abc....'