MySQL データベースに格納されている PHP を呼び出すページを作成しようとしています。MySQL データベースに保存されているページには、ページの読み込み時に実行したい PHP (および HTML) コードが含まれています。
どうすればこれを行うことができますか?
これにはevalコマンドを使用できます。ただし、このアプローチを使用すると多くの落とし穴があるため、これには反対することをお勧めします。デバッグは(より)難しく、セキュリティ上のリスクが伴います(DB 内の不正なコンテンツが実行されるなど)。
PHPでevalが悪になるのはいつですか?例えば。Google for Eval は悪であり、別のソリューションを見つける必要がある理由の例がたくさんあります。
追加: エクスプロイトについて言及しているもう 1 つの優れた記事は、このブログ投稿です。Eval の不適切な使用によって引き起こされた過去の vBulletin および phpMyAdmin の悪用を指します。
簡単:
$x // your variable with the data from the DB
<?php echo eval("?>".$x."<?") ?>
私に教えてください、多くのアプリケーションで私にとってうまく機能します。誰もがそれがどれほど悪いかをすぐに言うが、実際に率直な答えを助けるのが遅いことに気付かずにはいられません...
eval()関数は、ここの他の回答でカバーされていました。eval絶対に必要な場合を除き、 の使用を制限する必要があることに同意します。db に PHP コードを含める代わりに、メソッドが呼び出されたクラス名、たとえばexecute(). カスタム PHP コードを実行する必要があるときはいつでも、db から取得したばかりの名前のクラスをインスタンス化して実行->execute()します。これははるかにクリーンなソリューションであり、優れた柔軟性を提供し、サイトのセキュリティを大幅に向上させます.
PHPのeval関数を見ることができます。任意の PHP コードを実行できます。ただし、これは大きなセキュリティ リスクになる可能性があり、避けるのが最善です。
ソース管理システムを使用して、さまざまなインストール (およびそれらの間で異なるモジュール) のさまざまなフォークを保存することを検討しましたか? これは、私が思いつくアプリケーション構成のベスト プラクティスの 1 つです。あなたの要件は珍しい要件ではないため、過去に他の人によって解決された問題です。コードをデータベースに保存することは、参照を見つけるのに苦労したり、ベスト プラクティスとしてアドバイスを受けるのに苦労したりすると思います。
説明を投稿してよかったです。適切な質問を探して、意図せずに答えを提示した可能性があります。
データベースからphpコードを読み取り、一意の名前でファイルに保存してから、phpコードを実行してデバッグするためのこの簡単な方法でファイルをインクルードします。
$uniqid="tmp/".date("d-m-Y h-i-s").'_'.$Title."_".uniqid().".php";
$file = fopen($uniqid,"w");
fwrite($file,"<?php \r\n ".$R['Body']);
fclose($file);
// eval($R['Body']);
include $uniqid;