135 lines
2.8 KiB
PHP
135 lines
2.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Неверный запрос
|
|
*/
|
|
namespace ctiso;
|
|
use Exception,
|
|
ArrayAccess,
|
|
ctiso\Collection,
|
|
ctiso\Session;
|
|
|
|
// HTTPRequest = ArrayAccess
|
|
class HttpRequest extends Collection implements ArrayAccess
|
|
{
|
|
|
|
public $_session;
|
|
/**
|
|
* Constructor
|
|
* Stores "request data" in GPC order.
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$list = array (
|
|
'data' => $_REQUEST,
|
|
'get' => $_GET,
|
|
'post' => $_POST,
|
|
'cookie' => $_COOKIE);
|
|
|
|
$ajax = $this->isAjax();
|
|
foreach ($list as $key => $value) {
|
|
$data = new Collection();
|
|
$data->import($value);
|
|
parent::set($key, $data);
|
|
}
|
|
|
|
$data = new Collection();
|
|
$data->import($GLOBALS['_FILES']);
|
|
parent::set('files', $data);
|
|
}
|
|
|
|
function _get($key)
|
|
{
|
|
return parent::get($key);
|
|
}
|
|
|
|
function get($key, $default = null)
|
|
{
|
|
return parent::get('data')->get($key, $default);
|
|
}
|
|
|
|
function session(Session $value = null)
|
|
{
|
|
if ($value) {
|
|
$this->_session = $value;
|
|
}
|
|
return $this->_session;
|
|
}
|
|
|
|
function set($key, $value/*: any*/)
|
|
{
|
|
return parent::get('data')->set($key, $value);
|
|
}
|
|
|
|
function export($key = 'data')
|
|
{
|
|
return parent::get($key)->export();
|
|
}
|
|
|
|
function clear()
|
|
{
|
|
return parent::get('data')->clear();
|
|
}
|
|
|
|
/**
|
|
* Allow access to data stored in GET, POST and COOKIE super globals.
|
|
*
|
|
* @param string $var
|
|
* @param string $key
|
|
* @return mixed
|
|
*/
|
|
public function getRawData($var, $key)
|
|
{
|
|
$data = parent::get(strtolower($var));
|
|
if ($data) {
|
|
return $data->get($key);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function setRawData($var, $key, $val)
|
|
{
|
|
$data = parent::get(strtolower($var));
|
|
if ($data) {
|
|
return $data->set($key, $val);
|
|
}
|
|
}
|
|
|
|
public function setAction($name)
|
|
{
|
|
$this->setRawData('get', 'action', $name);
|
|
}
|
|
|
|
public function getAction()
|
|
{
|
|
$result = $this->getRawData('get', 'action');
|
|
return ($result) ? $result : 'index';
|
|
}
|
|
|
|
public function isAjax()
|
|
{
|
|
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest');
|
|
}
|
|
|
|
public function redirect($url) {
|
|
header('location: ' . $url);
|
|
exit();
|
|
}
|
|
|
|
|
|
public function offsetSet($key, $value) {
|
|
}
|
|
|
|
public function offsetExists($key) {
|
|
}
|
|
|
|
public function offsetUnset($key) {
|
|
}
|
|
|
|
public function offsetGet($key) {
|
|
}
|
|
|
|
static function getProtocol() {
|
|
return (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
|
|
}
|
|
}
|