0

我想在更改下拉列表中的选项时更新数据库的值。更新后 ctrl 重定向回订单页面。现在更新工作正常,但无法返回订单页面。我为此使用以下代码。

orders.php 中的代码

<select name="order_status" onchange="update(this.value,<?php echo $row['orders_id'];?>)">
    <option value="1" <?php if($row['orders_status']=='1'){ ?>selected="selected"<?php } ?>>In process</option>
    <option value="2"<?php if($row['orders_status']=='2'){ ?>selected="selected"<?php } ?>>Processed</option>
    <option value="3"<?php if($row['orders_status']=='3'){ ?>selected="selected"<?php } ?>>Dispatched</option>
    </select>

            <script>
            function update(vals,order){
                window.location="index.php?main_page=orders&val="+vals+"&id="+order;
            }
            </script>


<?php
if(($_REQUEST['id']) && ($_REQUEST['val'])){

    $manufacturers = $db->Execute("update orders set orders_status = '{$_REQUEST['val']}'
                                    where orders_id ='{$_REQUEST['id']}'");

if($manufacturers == '1'){
zen_redirect(zen_href_link('orders', '', $request_type));
}
}

?>

4

1 回答 1

0

您的代码中有几个问题:

  1. 您的代码中存在严重的 SQL 注入漏洞。在数据库查询中使用它们之前,您需要对输入进行清理。如果有人发现您的页面并尝试使用恶意输入,他们可能会对您的数据库造成严重损害。

  2. 与字符串值进行比较时,不能使用数据库对象作为操作数。

    if($manufacturers == '1'){
      zen_redirect(zen_href_link('orders', '', $request_type));
    }
    

您可能只用 zen_redirect 行替换它,而不使用 if() 语句,因为无论如何您都会执行重定向。

  1. 然后就是为什么要在最初没有管理权限的店面页面上执行管理更新任务的整个问题。
于 2012-05-07T03:41:04.353 回答