0

こんばんは、あふれんばかりの仲間、私が解決しようとしている小さな問題がありますが、それはできません。あなたが助けてくれることを願っています。

cURLを介してWebサイトに文字列を送信するスクリプトがあります。これは期待どおりに動作し、Webページは正常に応答します。私の問題は、私が利用したい一連の定義がWebサイトにあることです(説明のために、以下の例:)。定義が保存されているファイルへの参照をすでに追加しました。これは魅力のように機能します。

define('TABLE_COUNTER'、'counter');

私が送信しているWebサイトのスクリプトが単純であるとしましょう(すべてのセキュリティとmumbo-jumboは別として):

mysql_query($ _ POST ['aaa']);

$_POST['aaa']は有効なクエリです。問題のWebサイトで次のことを行うと、結果は次のようになります。

mysql_query( "SELECT * FROM"。TABLE_COUNTER);

これは次のように解釈されます。

mysql_query( "SELECT * FROM counter");

ただし、Webサイトの最後にあるスクリプトで、定数が定義されたsqlqueryを実行することはできません。どんな助けでも大歓迎です(私はここでたくさんの髪を失っています!)。

ありがとう!

4

1 に答える 1

0

これを行う方法は次のevalとおりです。

$myquery_string = 'mysql_query('.$_POST['aaa'].');';
eval($myquery_string);

ただし、これを行うことはお勧めしません。これは、フォーム入力にほぼ有効なPHPコードを含めることができ、スクリプトによって実行されるためです。これは、通常のSQLまたはXSSインジェクションよりも悪いです。

また、フォームに入力するとき、ユーザーはクエリの文字通りの部分の周りに必要なすべての引用符を含める必要があります。

より良い解決策は、入力用のテンプレート言語を定義し、PHPスクリプトでテンプレートプレースホルダーを適切な定数に置き換えることです。しかし、私はあなたのためにこれを書くつもりはありません。

于 2012-11-15T02:22:35.103 に答える