私はevalを使ってデータベースから来るPHPコードを実行しています。コードはメタタグとページタイトルのためのものです。私はこの($のSEOを行うコントローラで、その後PHP、評価コードの結果が変数
$name . " test page title |".SiteSettings::getSiteNameAlternate();
そしてmeta_titleを持っているオブジェクトであり、その要素は、DBからの正確な文字列があります。一例としては、(これはテーブルに格納されている)、このようになります。 ):
$pageTitle = isset($seo->meta_title) ? @eval("echo $seo->meta_title") : null;
私はLarevelフレームワークを使用しており、そのページタイトルをブレードテンプレートに渡しています。ブレードコード
<title>{{ isset($page_title) ? $page_title : SiteSettings::defaultPageTitle() }}</title>
問題はエバールのエコーがページの上部にも表示されるためです。
print(ダム私は知っている)とprintfを使ってみました。動作しませんでした。その評価の値を画面に出力せずに変数に入れる方法はありますか?
あなたはwahtに 'eval'を使用していますか?あなたはどこかで間違った順番を守っていないと確信していますか? – PeeHaa
私はおそらく間違った方向に進みましたが、データベースからPHPコードを実行する他の方法はありません –
DBからコードを実行することは一般的には悪い考えです。 evalからコードを実行することは、一般的には悪い考えです。それを行うために時々正当な理由がありますが、まれにしかありません。通常、人々はこのようなコードを書くと、開発者が変更を加えることなくエンド・ユーザーがコードをシステムに追加できる柔軟なCMSタイプのプラットフォームを作成しようとしています。これは開発者ではないにしても、誰がそのコードを書こうとしているのかという誤解に基づいています。設定可能なシステムが必要な場合、正しい方法はインストール可能なプラグインのシステムを経由することです。 – Simba