检查行是否存在,以便用户无法篡改输入

时间:2015-02-03 17:56:08

标签: php mysql if-statement exists

注意:我编辑了整个帖子,试图让它更清晰。

我很清楚我的问题,但这是我的最后一次尝试。 我得到了这个,点击按钮后发送;

                echo"Auto/Prijs<br><br><select name='autos'>";
            echo"<br><br>";

            $sql = "SELECT `garage`.`id`, `car_id`, `schade`, `naam`, `prijs` FROM `garage` LEFT JOIN `cars` ON (`garage`.`car_id` = `cars`.`id`) WHERE `user_id`=".ID." ORDER BY `id` ASC LIMIT ".($page * 10).", 10";
$sql = mysql_query($sql) or die(mysql_error());
    $i = 1;
while($res = mysql_fetch_assoc($sql)){
    echo"


<option value='".$res['car_id']."'>".$res['naam']."</option><br>
    ";

这是一个下拉列表,显示了carnames而不是car_id。 现在,car_id不是唯一的,而是指汽车。 '车库'表中的'id'是唯一的。我是否也可以调用'id',并在发送时检查该ID是否实际上是发送的'car_id'?因为,你可以篡改发送的car_id并简单地改变它。

发送时会发生这种情况:

if(isset($_POST['start'])){
$prijs = $_POST['prijs'];
$carr = $_POST['autos'];
$sql = mysql_query("SELECT `id` FROM `automarkt` WHERE `seller_id`=".ID." LIMIT 1") or die(mysql_error());
mysql_query("INSERT INTO `automarkt`(`seller_id`, `prijs`, `car_id`) VALUES (".ID.", ".$prijs.", ".$carr.")") or die(mysql_error());

我的想法不合适,而且我不能清楚自己需要做什么。我需要检查发送的car_id是否实际上在'用户'的车库中。 (试着通过检查'车库'表中的唯一条目'id'来做到这一点。

1 个答案:

答案 0 :(得分:0)

通过匹配行来修复它。

$sql = mysql_query("SELECT `id` FROM `garage` WHERE `car_id`=".$carr." AND `user_id`=".ID) or die(mysql_error());

} elseif(mysql_num_rows($sql) == 0){
        $msgs = bad("x");

感谢您的回复。