2017-01-25 6 views
0

管理者コントロールパネルのユーザーがHTMLフォームからPHP if文を実行できるようにしようとしています。PHPフォームをHTML形式で送信する

コントロールパネルがサードパーティのソフトウェアと統合されているため、PHP変数を使用してデータを選択する方法は1つしかありません。

ユーザは例えばif文完全でHTML入力フィールドを記入するインターフェイスを有することになるフォーム

$contact_details['Contacted'] == "Yes" 

を介して送信されることになるif文の例

$contact_details['Contacted'] == "Yes" && $contact_details['Country'] == "UK" 

ただし、フォームが送信されると、if文は結果を適切にフィルタリングしません。

echo $_POST["ifstatement"]."<br>"; //Show statement run - Remove when if works 
if($_POST["ifstatement"]){ echo "Contact ID: ". $contact_details['id'] ." - Contact location: ". $contact_details['Country'] ." - "." Contacted?: ". $contact_details['Contacted']."<br>" 

実行する必要があるステートメントが表示されますが、クエリは実行されません。

これを動作させる方法はありますか、それとも別の方法で行う必要がありますか?

+0

'$ mIfStatement' varを作成し、好きなif文で文字列として設定します。次にif文を変更します。if($ _ POST ["ifstatement"] == $ mIfStatment) ' –

+1

if文はどのように投稿されますか?文字列として? PHPで解析するには 'eval()'を実行する必要があります。 _注意:_ 'eval()'を使うときは注意してください。これはPHPとして_any_コマンドを実行し、非常に安全でないとみなされます。通常、あなたがやろうとしていることをやるより安全な方法があります。 –

+0

eval()メソッドに関する@Magnus Erikssonの答えを追加します。 php.net/manual/en/function.eval.phpまたはwww.w3schools.com/php/func_misc_eval.aspを確認できます。 –

答えて

2

If-Statementが評価されていません。あなたはそれを評価するためにeval()を使用しなければなりません。

<?php 
$foo = '$result = ' . $_POST["ifstatement"] . ';'; 
eval($foo); 
if ($result) { 
    // ... 
} 
?> 

しかし、これは本当に悪いコードのにおいであり、あなたが入力を正しくサニタイズしていない場合は、巨大な remote code executionバグを作成している。ただ無思慮にこの例をコピーしないでください。

あなたのアプローチを再考する必要がありますので、より安全で安全です。

関連する問題