私はPHPコードを少し持っています(人々がページ、コメント、フォーラム投稿、ブログ投稿などを表示できるようにするCMS(drupalではない)のモジュール機能用...):
if(isset($_GET["m"]))
{
//Does the module exist and activated, and has it a function called view?
if(isset($module_exists[$_GET["m"]]) && method_exists($_GET["m"], "view"))//Yep
{
//Load view (should be an array)
eval("$module_view = ".$_GET["m"]."::view();");
if(!is_array($module_view))//Not an array :(
{
error::e500module($_GET["m"], $_SERVER["REQUEST_URI"]);
}
}
else//Nope, so display error
{
error::e404($_SERVER['REQUEST_URI']);
}
}
今、ページを解析するときに次のエラーが発生します。
Notice: Undefined variable: module_view in C:\wamp\www\SYSTEM\start.php on line 34
Parse error: parse error in C:\wamp\www\SYSTEM\start.php(34) : eval()'d code on line 1
Notice: Undefined variable: module_view in C:\wamp\www\SYSTEM\start.php on line 35
しかし、私がするとき:
eval("print_r(".$_GET["m"]."::view());");
それ以外の:
eval("$module_view = ".$_GET["m"]."::view();");
エラーは発生しませんが、単に配列が印刷されました。誰かが私が間違っていることを知っていますか? わかりません。eval() が安全ではないことを私に言わないでください。
ありがとう。