2017-12-05 7 views
0

私はCodeigniterベースのシステムを構築しました。htmlspecialchars()またはhtml_escape()全体のPHP/CodeigniterベースのWebサイトを適用する方法はありますか?

私はデータベースから値を取り出し、入力フィールドに表示します。

例:

<input type="text" class="form-control" required="" name="tes_title" value="<?php echo htmlspecialchars($tes_info['tes_title']); ?>"> 

だから、私はいくつかの値を二重引用符と単一引用符が含まれているためhtmlspecialcharsを使用する必要がありました。しかし、手動ですべての入力に追加するには、時間がかかります。

サイト全体でhtmlspecialchars()またはhtml_escape()を適用する方法はありますか?

私も、私はそれが<input type="text" class="form-control" required="" name="tes_title" value="<?php echo htmlspecialchars($tes_info['tes_title']); ?>">

+0

をあなたがにこれを行うことができます関数は '$ tes_info'で返します。たとえば、次のようになります。 'function getResults(){(あなたのクエリ)$ result = [(配列内のすべてのアイテム)]; foreach {$ result htmlspecialchars($ value)} $ result} 'を返します。このコードは書かれたとおりに動作しませんが、おそらくあなたはそのアイデアを得るでしょう。 –

+0

あなたのロジックを適用してヘルパーに入れるための関数を書く。あなたはどこでも好きなところで使うことができます。 –

+0

Smartyはこれを行うことができます!それをgithubのciに統合するためのライブラリがあります。あなたのビューをすべて変換する準備ができました。 – Alex

答えて

0

として働いていたしなければならない<input type="text" class="form-control" required="" name="tes_title" value="<?php echo $tes_info['tes_title']; ?>">使う意味は便利な関数を記述します。

<?php 

function e($str) { 
    //return escaped string. 
} 

そして、必要な場合に出力のために使用します。

<?= e($foo) ?> 

しかし、私はあなたの入力出力にそれを閉じ込めると思います。必要に応じてエスケープし、適切にエスケープします。

Codeigniterには、html_escapeヘルパー関数が焼き付けられているように見えますが、これはhtmlspecialcharsのラッパーです。また、配列を入力として受け取ります。

(コントローラ内の)ビューに渡す前に、データを前処理することができます。しかし、それは混乱して扱いにくくなる可能性があります。あなたが通過したすべてをエスケープしたいと思うかもしれません。

0

送信ごとにフックを定義できます。

編集アプリケーション/設定/ hooks.phpあなたの関数では

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

$hook['post_controller_constructor'][] = array(        'class' => 'SpecialChar', 
'function' => 'remove_specials', 
'filename' => 'removespecial.php', 
'filepath' => 'hooks' 
); 

ファイル、フォームが

EX提出しているかどうかを確認する必要があります。

if ($this->input->post()) {  
    foreach($this->input->post() as $post) 
    $newValue = htmlspecialchars($post); 
} 
+0

html出力をエスケープすることは、フィルタリング/エスケープ入力とは全く異なります。 – Progrock

関連する問題