2009-12-11 11 views

答えて

3

HTMLに名前を付けて、データベースフィールド名とPHPコードのHTMLフィールド名を手動でマッピングします。

実際には、prepared statementsを使用して適切な認証とエラーチェックを行っている場合、人々がテーブルのフィールド名を知っているかどうかは関係ありません。

2

入力フィールドの名前を変更するだけで問題があると思われる場合は、その名前を変更することができます。いずれにしても、正しいSQLカラムにそれらをリンクする必要があります。

これは、あいまいさによるセキュリティです。

あなたのアプリケーションで(SQLインジェクションを避けるために)入力をどのように扱うかには注意が必要ですが、より合理的なアプローチのように聞こえます。

1

これが本当に問題になる場合は、field1、field2(またはf1、f2)というユーザーだけを対象にして、ラボブックのデータベースフィールドにマップします。しかし、HTMLコードからデータベース呼び出しを行っていない限り、フィールド名を持たないフォームを参照するだけで、データベース構造自体についてはほとんど把握できません。

2

私は通常、サニタイズ/処理の便宜のためにプレフィックスとサフィックスを追加します。例えば

、フィールドは単に文字を含まなければならない場合は、何もない、私はtx_field_nameという名前を付けます、フィルターのhtml、hf_field_nameまたは完全なHTML hx_field_nameを含めることができる場合は、そうでない場合は...フォームを取得しますスクリプトは知っていますプレフィックスのベースで値をサニタイズしてチェックする方法。 HTMLフィールドに許可されている

しかし、あなたの意味が明示的に、データベースの列の名前を隠すだけでなく、それをあなたが名前を与えた、foobar、またはランダムなサフィックスを追加、あるいは-_を置き換えている場合(名前ではなく、データベースの列名で)

PS:私は、フォームを処理するために

$values = $_POST; 
$n_val = count($values); 
$i = 0; 
foreach($values AS $key => $value){ 
    $pairs .= " `$key` = '$value' "; 
    if($n_val > $i){ 
     $pairs .= ', '; 
    } 
} 
thedbyouprefer_query("UPDATE table SET $pairs WHERE id = '42'"); 

のようなコードを使用しますが、PHP(..andビットでそれをマッピングあなたはされていないことを願っています準備が整った駅は悪くない)

関連する問題