我有两个页面,product.php和viewcart.php。当用户单击product.php上的按钮时,它会将产品添加到后端(及其属性)并转到viewcart.php。数据通过以下代码提交给viewcart.php。除了product.php上的文本框中的值之外,还有一些需要传递的php变量(变量是下面的“val”)。
<script language="javascript">
function test()
{
var val=document.getElementById("textarea").value;
var hrf="viewcart.php?retailer=<?php echo $retailer?>&link=<?php echo $link; ?>&price=<?php echo $price; ?>&title=<?php echo $title; ?>&options="+val;
document.getElementById("a_link").href=hrf;
}
</script>
<a href ="#" id="a_link" onclick="test();" class="btn btn-success" type="submit"><i class="icon-shopping-cart icon-white"></i> Add to Cart</a>
在viewcart.php上,产品会添加到后端,然后通过以下代码显示:
@$link = $_GET['link'];
$price = $_GET['price'];
$title = $_GET['title'];
$retailer = $_GET['retailer'];
$options = $_GET['options'];
$session = session_id();
$_SESSION['sess_var'] = $session;
//connect to database code here
mysql_query("INSERT INTO sessionid (sessionid, link, retailer, price, title, qt, options) VALUES('$session' , '$link', '$retailer', '$price', '$title', 1, '$options') ");
我遇到的问题是当用户刷新viewcart.php时;由于上面的代码,产品再次添加。如果用户单击product.php上的提交按钮(而不是通过刷新viewcart.php或单击“返回”按钮以访问viewcart.php),如何确保产品已添加到数据库中?
答案 0 :(得分:1)
从技术上讲,如果您使用相同的POST数据刷新页面,据我所知,您将拥有相同的引荐来源,因此您不应该尝试检查引用者是否为product.php。
您应该使用更新/插入MySQL查询。首先确保您还在查询中插入主键(以便在刷新页面时,它将是相同的键),然后使用类似于:
的内容INSERT INTO sessionid (id,a,b,c) VALUES (0,1,2,3)
ON DUPLICATE KEY UPDATE id=id;
最后,不要忘记清理您的输入。
答案 1 :(得分:0)
您必须检查是否已添加该行。 因此,使用select,如果“fetch()”返回不同于“false”的内容,请插入数据。
答案 2 :(得分:0)
通常使用POST/Redirect/GET模式解决此问题。通常,如果你有一个名为viewcart.php的文件,那么它应该只显示购物车而不是添加产品。
答案 3 :(得分:0)
// where submit is the name of the forms submit input/button
if ($_GET["submit"]) {
// add to cart
} else {
// products should have already been added
}