テーブルのカスタム検索を行っています。 from、to、statusの3つの検索パラメータがあります。私はeval()
を使用して、受信したパラメータに従って結果をフィルタリングしています。evalのソリューション
$search = ($from != "" || $to != "" || $status != "");
if ($search) {
if ($from != '') {
$condition[] = '$from == $res["from_number"]';
}
if ($to != '') {
$condition[] = '$to == $res["to_number"]';
}
if ($status != '') {
$condition[] = '$status == $log["status"]';
}
$search = "if(" . implode(' && ', $condition) . '){ return false; } else { return true; }';
}
条件を取得した後、私は私がeval()
を使用したくないされてeval
if (eval($search)) {
}
私の問題を使用しています。以下は、私のコードです。セキュリティ上の問題が発生する可能性があります。それ以外の場合は不可能なはしご、それは非常に長いです。他の解決策?
- それは潜在的に危険である
if($from == $res["from_number"] && $to == $res["to_number"]) {
}
なぜあなたも最初の場所ではevalを使用していますか?なぜ '$ search'をコードとして解釈する必要がありますか? – Carcigenicate
3つのパラメータは大したことではありません。 –
質問をあなたの入力と期待される出力に更新してください。 – mkaatman