mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 22:28:51 +00:00
Fixed: bug #3352 (function token_get_all() is missing)
git-svn-id: file:///svn/phpbb/trunk@6206 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
afad755f93
commit
ed69875649
1 changed files with 33 additions and 0 deletions
|
@ -82,6 +82,39 @@ class template_compile
|
||||||
*/
|
*/
|
||||||
function remove_php_tags(&$code)
|
function remove_php_tags(&$code)
|
||||||
{
|
{
|
||||||
|
if (!function_exists('token_get_all'))
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* If the tokenizer extension is not available, try to load it and if
|
||||||
|
* it's still not available we fall back to some pattern replacement.
|
||||||
|
*
|
||||||
|
* Note that the pattern replacement may affect the well-formedness
|
||||||
|
* of the HTML if a PHP tag is found because even if we escape PHP
|
||||||
|
* opening tags we do NOT escape PHP closing tags and cannot do so
|
||||||
|
* reliably without the use of a full-blown tokenizer.
|
||||||
|
*
|
||||||
|
* The bottom line is, a template should NEVER contain PHP because it
|
||||||
|
* would comprise the security of the installation, that's why we
|
||||||
|
* prevent it from being executed. Our job is to secure the installation,
|
||||||
|
* not fix unsecure templates. if a template contains some PHP then it
|
||||||
|
* should not be used at all.
|
||||||
|
*/
|
||||||
|
@dl('tokenizer');
|
||||||
|
|
||||||
|
if (!function_exists('token_get_all'))
|
||||||
|
{
|
||||||
|
$match = array(
|
||||||
|
'\\?php[\n\r\s\t]+',
|
||||||
|
'\\?=',
|
||||||
|
'\\?[\n\r\s\t]',
|
||||||
|
'script[\n\r\s\t]+language[\n\r\s\t]*=[\n\r\s\t]*[\'"]php[\'"]'
|
||||||
|
);
|
||||||
|
|
||||||
|
$code = preg_replace('#<(' . implode('|', $match) . ')#is', '<$1', $code);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
$tokens = token_get_all('<?php ?>' . $code);
|
$tokens = token_get_all('<?php ?>' . $code);
|
||||||
|
|
Loading…
Add table
Reference in a new issue