2015-08-12 6 views
1

У меня есть огромная система и по соображениям безопасности я хочу сделать htmlspecialchars на всех $_GET и $_POST переменных. проблема заключается в том, что будет дублировать htmlspecialchars и вместо <script> он покажетhtmlspecialchars set double_encode false по умолчанию

&lt;script&gt;&lt;/script&gt; 

Есть ли способ установить double_encode ложь по умолчанию вместо верно?

+0

С PHP 5.2.3 был добавлен параметр double_encode. Дополнительная информация: http://php.net/manual/ro/function.htmlspecialchars.php Вы можете просто добавить false для параметра double_encode в свою функцию htmlspecialchars. – Allkin

+0

Я знаю .. мой вопрос в том, могу ли я сделать это глобально для всех функций htmlspecialchars, потому что у меня их много. – user3742451

ответ

0

Вы можете переписать функцию и установить для параметра double_encode значение false по умолчанию. Вот пример кода:

<?php 
rename_function('htmlspecialchars', 'renamed_htmlspecialchars'); 
function overriden_htmlspecialchars($string, $flags=NULL, $encoding='cp1251', $double_encode=false) { 
    $flags = $flags ? $flags : (ENT_COMPAT|ENT_HTML401); 
    return renamed_htmlspecialchars($string, $flags, $encoding, $double_encode); 
} 
override_function('htmlspecialchars', '$string, $flags, $encoding, $double_encode', 'return overriden_htmlspecialchars($string, $flags, $encoding, $double_encode);'); 
?> 
+0

Я пробовал, но для этого требуется PECL apd. Без плагинов нет способа? – user3742451