0

データベース レコードのコンテンツを要求/インクルードしたいのですが、要求/インクルードはファイルしか受け付けません。これはキャッシングに関連しているため、ファイルに何も書き込みたくありません (衝突など)。それをかわす方法は?

4

4 に答える 4

3

データベースから PHP コードを取得していますか? もしそうなら、あなたはおそらくそれを間違っています。理想的には、コードではなく、データベース内にデータのみを保存する必要があります。

データベースから PHP 構造を取得する場合は、serialize()'d バージョン (またはjson_encode()'d) を使用することを検討してください。

あなたが達成しようとしていることの正確な目的を見逃している可能性があります。私の答えが間違っている場合はお知らせください。

eval何をするにしても、本当に必要でない限り、頼らないでください。それでも、しないでください:)

于 2012-05-11T11:47:56.767 に答える
1

他の人がカバーeval()していて、これは悪い考えであるという事実があるので、この「コンテンツ」をファイルに書き込むというトピックに触れます。を使用しtempnamます。これにより、0600 パーミッションを持つ、作成されたばかりの一意のファイル名が表示されます。次に、それを開いてコンテンツを書き込み、閉じてから、require/include を実行できます。tempnamman ページの例 #1 を参照してください。

tempnamの戻り値がfalse でないことを確認してください。unlink完了後にファイルを確認してください。

于 2012-05-11T12:10:12.267 に答える
1

これは、特にデータベースのコンテンツがユーザーから提供された場合は非常に危険ですが、とにかくこれを使用できます:

eval($your_database_content);

マニュアル

于 2012-05-11T11:41:22.547 に答える
1

コードの場合は、を使用する必要がありますが、eval()関連する多くのアンチパターンがありますeval()

マニュアルには次のように書かれています。

注意 eval() 言語構造は、任意の PHP コードを実行できるため、非常に危険です。したがって、その使用はお勧めできません。この構文を使用する以外に選択肢がないことを慎重に確認した場合は、ユーザーが提供したデータを事前に適切に検証せずに渡さないように特に注意してください。

于 2012-05-11T11:42:03.963 に答える