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));
    }
    

関係なくリダイレ​​クトを実行するため、if() ステートメントを使用せずに、おそらく zen_redirect 行だけに置き換えることができます。

  1. そして、そもそも管理者特権を持たない店頭ページで管理更新タスクを実行している理由の全体的な問題があります.
于 2012-05-07T03:41:04.353 に答える