2016-11-12 11 views
-2

を解釈しません。ブラウザは、私は次のような構成で構築する簡単なCMSでCKEditorバージョンを使用していますPHPコード

<script> 
     if ($("#editor").length) { 
     CKEDITOR.replace('editor', { 
     language: 'en', 
     allowedContent: true, 
     }); 
     CKEDITOR.config.protectedSource.push(/<\?[\s\S]*?\?>/g); 
     } 
       </script> 

エディタでソース]タブに移動し、次のようないくつかのPHPコードを入力する場合、それは素晴らしい作品:

<?php echo "hello"; ?> 

それが今<?php echo "hello"; ?> so far so good

私の問題としてデータベースに保存されますそれをデータベースから取得してブラウザに表示すると、表示されません。

私は、コードを持っており、私は以下を参照してください。変数上のvar_dumpをした:

...modules\pages\views\base.php:38:string '<?php echo "hola"; ?>' (length=21) 

だから、値が存在し、そのビューに達し、私はそれが上に表示されていない理由をundestandいけませんページ。

私は私のPHPコードがbeinggが

<!--?php echo "hola"; ?-->

をコメントしているソースコードを見ればページがtemplate.php であり、これは私が次の手順を実行した場合、私は、コード を表示しようとしています方法です

<div class="article-content-container"> 
    <?php echo $this->security->xss_clean($content); ?> 
</div> 

それは

<div class="article-content-container"> 
          &lt;?php echo "hola"; ?&gt;<!--?php echo "hola"; ?-->       
         </div> 
のように表示されます

私はこの

<div class="article-content-container"> 
     <?php echo $content; ?> 
    </div> 

のように表示された場合にはコメントします。

私は私がすべてのヘルプはappretiatedされるだろう、明らかになった願っています。

おかげで、データベースにあなたのPHPタグを保存しない場合は、保存されたコードを実行するためにeval()関数を使用することができ

+3

ブラウザはPHPサーバを実行しません。 –

+1

文字列は正確に出力されています。ブラウザに関する限り、PHPコードは単なる文字列です。 Webブラウザが何かをすることは期待できません。 – David

答えて

1

ブラウザは、PHPコードを解釈していない、と彼らはそれについての些細な事を知りません。彼らは決して持っていません。 PHPコードはサーバー上で実行されます。そこからクライアントのブラウザ(通常はHTML)にエコーされる出力が生成されますが、CSSやJavaScript、画像、またはその他のダウンロード可能なファイルでもあります。

あなたが出力PHPコード、訪問者がそれを行うことができますほとんどが手作業で、ローカルファイルに保存し、独自のPHPソフトウェアをインストールし、その中でそれを実行している場合。あなたが何をしていても、ブラウザで魔法のように実行することは決してありません。

ブラウザでいくつかのコードを実行したい場合は、それには、JavaScriptでなければなりません。あなたは、サーバー上のいくつかのPHPコードを実行したい場合は、んではないechoそれ、evalそれ:

<div class="article-content-container"> 
    <?php eval($content); ?> 
</div> 

evalはすでにPHP開始タグを持つものとしてその入力を扱いますので、あなたではなく、それにecho "hello";を渡すだろうと<?php echo "hello"; ?>より。必要に応じて、eval'dコード内で?>を使用してHTML + PHPモードに戻ることができます。

PHPコードまたはJavaScriptコードが敵対的になるように設計されている可能性があります。そのため、マークアップやコードをWebサイトで実行する必要があります。あなたは、あなたのウェブサイトの認証された管理者でない人には許可しないでください。ランダムな人が実際に実行できるようにする必要がある場合は、サンドボックスやそのようなコードを浄化する方法がありますが、それはより複雑です。 CodeIgniterのxss_cleanis an incomplete attempt to stop XSSであり、ユーザが提出したコードを安全に実行するために設計されているわけではありませんが、コードをマングルして書くのは面倒です。一般的に

  • あなたが提出したPHPを実行する必要がある場合は、eval($content);を使用しています。

  • 実行可能なJavaScriptを含む送信済みHTMLを出力する必要がある場合は、echo $content;を使用します。

  • 送信されたプレーンテキスト(通常はユーザーからの入力を許可する唯一の形式)を出力する必要がある場合は、echo htmlspecialchars($content);を使用します。

-1

をguys-:

eval($this->security->xss_clean($content)); 

を保存したビットがない場合のみ<?php and/or ?>

EDIT囲ま:まかせ人々は、データベースからコードを実行したり、データベース内のコードを保存すると潜在的なリスクです。それは悪用される可能性があります。

+4

サーバ*上で*実行されるPHPコードをユーザーが入力できるようにするには、権限が昇格される*可能性があります。 – David

+1

ありがとう、私は自分の投稿を編集しました。確かに潜在的なセキュリティリスクです。 – SmartGuyz

関連する問題