diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 5a168e251..6a0226e4f 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -113,6 +113,15 @@ class Context { * @var bool true if attached file exists */ var $is_uploaded = false; + /** + * Pattern for request vars check + * @var array + */ + var $pattern = array( + '/<\?/iUsm', + '/<\%/iUsm', + '/ $val) { if($val === '' || Context::get($key)) continue; $val = $this->_filterRequestVar($key, $val); @@ -823,21 +826,36 @@ class Context { if($set_to_vars) { - foreach($pattern AS $key2=>$value2) - { - $result = preg_match($value2, $val); - if($result) - { - $this->isSuccessInit = false; - break; - } - } + $this->_recursiveCheckVar($val); } $this->set($key, $val, $set_to_vars); } } + function _recursiveCheckVar($val) + { + if(is_string($val)) + { + foreach($this->pattern as $pattern) + { + $result = preg_match($pattern, $val); + if($result) + { + $this->isSuccessInit = FALSE; + return; + } + } + } + else if(is_array($val)) + { + foreach($val as $val2) + { + $this->_recursiveCheckVar($val2); + } + } + } + /** * Handle request arguments for JSON *