2012-05-11 4 views
0

データベースレコードの内容を要求/含める必要がありますが、/ includeはファイルのみを受け入れる必要があります。このことはキャッシュに関連しているので、ファイルに何かを書きたくない(衝突など)。どのようにそれをかわす?PHP、どのようにファイルにないものを要求するのですか?

+1

あなたが話している「コンテンツ」の種類を明確にしてください。 – jrennie

答えて

1

他の人がeval()をカバーしていて、これが悪い考えであることから、この「コンテンツ」をファイルに書き込むトピックに触れます。 tempnamを使用してください。これにより、ちょうど作成されたユニークなファイル名の名前が0600のアクセス権で与えられます。あなたはそれを開いたり、あなたのコンテンツを書いたり、閉じることができますし、次にrequire/includeすることができます。 tempnamのマニュアルページの例1を参照してください。

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

+0

私は自分を駄目にするつもりです –

1

これは、データベースの内容がユーザーから寄贈されました場合は特に、非常に危険ですが、とにかくあなたは、この使用することができます

eval($your_database_content); 

Manual

1

を、それがコードである場合は、eval()を使用する必要があり、 eval()

を伴う多くのアンチパターンがありますが、マニュアルは言う:

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

3

データベースからPHPコードをフェッチしていますか?もしそうなら、おそらくそれは間違っているでしょう。理想的には、コードではなくデータベース内にのみデータを格納する必要があります。

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

多分私はあなたが達成しようとしているものの正確な目的を見逃しているかもしれません、私は私の答えで間違った道にいるかどうか知らせてください。

本当に必要な場合を除き、evalに頼らないでください。それでも、しないでください:)

関連する問題