私はfromを持っています.2つのフィールドは次のとおりです
<select name="sortfield">
<option value="name" selected="selected">Name</option>
<option value="price">Price</option>
<option value="id">ID Code</option>
</select>
<select name="sortdir">
<option value="asc" selected="selected">Ascending</option>
<option value="desc">Descending</option>
</select>
これは次のページで取得$_REQUEST[]
され、クエリに追加されて、クエリの結果がどのようにソートされるかを決定します。迅速で汚い、サニタイズされていない方法はこれです
$query .= "ORDER BY ".$_REQUEST['sortfield']." ".$_REQUEST['sortdir'];
明らかに、これはSQLインジェクションの問題である可能性があります。これを修正できる1つの方法は、値を変更し、クエリを作成して値を交換するときにスイッチケースを使用することです。
switch($_REQUEST['sortfield'])
{
case '5524879':
$query .= "ORDER BY name";
break;
case '4587532':
$query .= "ORDER BY price";
break;
default:
$query .= "ORDER BY id";
}
これはSQLインジェクションを防ぐのに役立ちますが、クエリ/テーブル構造が変更されるたびにページを変更する必要があるため、あまり動的ではありません.switch ... case