刷新浏览器导致操作重复

时间:2018-09-10 03:50:42

标签: php html

我创建了一组代码,其中我使用isset($_GET['add'])将商品添加到购物车。

但是一旦刷新浏览器,它就会重复。我认为这很正常,因为浏览器会刷新相同的网址。

我唯一的解决方案是使用header(location:"")更改URL。 但我想创建一些内容,如果将其添加到购物车中,则不应刷新浏览器。

例如HTML:

<a  href="cart.php?addsr='.$row['id'].'">ADD TO CART</a> `

if(isset($_GET['add'])) { 
    /* FUNCTIONS HERE */
    header('location:'.$page);
}

一切都很好。实际上,它可以正常工作,但是,可以在不刷新页面的情况下添加到购物车吗? 我的另一个选择是删除cart.php 示例:

<a  href="?addsr='.$row['id'].'">ADD TO CART</a> 

但是基本上,当我刷新浏览器时,由于URL相同而导致操作重复,因此它会复制项目。

3 个答案:

答案 0 :(得分:0)

代替使用锚标记,您可以使用按钮,并通过jquery ajax将数据提交到特定的url,这样就不会刷新页面。

答案 1 :(得分:0)

如果无法避免刷新,则可以在网址中添加随机数或时间戳:

<a  href="cart.php?addsr='.$row['id'].'&t='.time().'">ADD TO CART</a>

然后,在您的php中可以在会话中设置“ t”参数,并检查最后一个值是否不同。

session_start();

if (!isset($_SESSION['lastItemCheck'] || $_SESSION['lastItemCheck'] != $_GET['t']) {
  /* Add the item to the cart */

  /* Set the $_SESSION variable as new t parameter */
  $_SESSION['lastItemCheck'] = $_GET['t'];
} else {
  /* This item was added to the cart, do nothing */
}

答案 2 :(得分:0)

还有一个名为add-cart-item.php的页面,然后在其中运行您的进程。然后通过购物车主页面上的ajax调用该页面。