【发布时间】:2016-12-16 04:51:41
【问题描述】:
用户应该能够删除特定行,但程序会继续删除第一行。我找到了答案here 试过了,没用。我想知道我做错了什么。
cart.php
<form id='updateCartForm' action="update_cart.php" method="get">
<input name="cart_item_name" type = "hidden" id ="cart_item_name" value='<?=$product['prod_name'];?>'>
<input name="cart_item_id" type = "hidden" id ="cart_item_id" value='<?=$product['id'];?>'>
</form>
update_cart.php
<?php
require_once "core/db.php"
//get data from form
$cart_item_name = $_GET['cart_item_name'];
$cart_item_id = $_GET['cart_item_id'];
//execute query
$sql = "DELETE FROM cart WHERE id =" .$cart_item_id;
$db->query($sql);
//flash success message
$domain =($_SERVER['HTTP_HOST'] != 'localhost')?'.'.$_SERVER['HTTP_HOST']:false;
$_SESSION['success_flash'] = $cart_item_name. ' was deleted from your cart.';
【问题讨论】:
-
检查您在
$cart_item_id中获得的值。假设有人将cart_item_id发送为1;DROP TABLE cart;阅读一下SQL Injection -
@bansi 他只需要发送值
id并且整个表将被清除,因为id = id始终为真。