2016-08-18 10 views
0

eval()を使用しないことをお勧めしますが、プロジェクトの特定の部分に使用する必要があります。PHP evalで期待される結果が得られない

一般に、私はPHP管理者にPHPコードを含むファイルをアップロードする方法を提供したいと考えています。PHPコードはデータベースに格納され、特定の基準が満たされたときに最終的に読み込まれて実行されます。

これは数人でしかアクセスできないイントラネットアプリケーションであるため、セキュリティの側面は深刻ではありません。

eval()によって実行されるPHPコードは、どのようなコードでも可能です。

$some_array = array(); 

$some_array[0] = 'Hello World'; 

echo $some_array[0]; 

このコードの出力は単純にHello Worldです。

eval(" 

$some_array = array(); 

$some_array[0] = 'Hello World'; 

echo $some_array[0]; 

"); 

理論的には、このコードの出力は同じである必要がありますが、実際はそうではありません。

私は、このエラーメッセージを取得しています:

Notice: Undefined variable: some_array in C:\xampp\htdocs\test.php on line 8 

Notice: Undefined variable: some_array in C:\xampp\htdocs\test.php on line 8 

Notice: Undefined variable: some_array in C:\xampp\htdocs\test.php on line 10 

Parse error: syntax error, unexpected '=' in C:\xampp\htdocs\test.php(12) : eval()'d code on line 3 

それは簡単なことのように思える - しかし、この問題はすでにいくつかの時間のために私が忙しくなっている...

+1

二重引用符ではなく、文字列に一重引用符を使用する必要があります。二重引用符では、PHPは$変数をその値で置き換えようとします。 – DaKirsche

+0

[PHPの一重引用符と二重引用符の違いは何ですか?](http://stackoverflow.com/questions/3446216/what-is-the-difference-between-single-quoted-and -double-quoted-strings-in-php) –

+0

**悪い**評価から手を離す!良いコードデザインdoeはevalを必要としません –

答えて

2

あなたのような単一引用符を使用する必要があります。

eval(' 

$some_array = array(); 

$some_array[0] = \'Hello World\'; 

echo $some_array[0]; 

'); 

それ以外の場合、PHPは文字列中の$ some_arrayを存在しない既知の値に置き換えようとします。

関連する問題