%PDF- %PDF-
Direktori : /data/www_bck/varak.net_bck/mail2.varak.net/libraries/afterlogic/common/ |
Current File : //data/www_bck/varak.net_bck/mail2.varak.net/libraries/afterlogic/common/http.php |
<?php /* * Copyright 2004-2014, AfterLogic Corp. * Licensed under AGPLv3 license or AfterLogic license * if commercial version of the product was purchased. * See the LICENSE file for a full license statement. */ /** * @package base */ class api_Http { /** * @var bool */ protected $bIsMagicQuotesOn; public function __construct() { $this->bIsMagicQuotesOn = (bool) ini_get('magic_quotes_gpc'); } /** * @param string $sKey * @param mixed $nmDefault = null * @return mixed */ public function GetQuery($sKey, $nmDefault = null) { return (isset($_GET[$sKey])) ? $this->_stripSlashesValue($_GET[$sKey]) : $nmDefault; } /** * @param string $sKey * @param mixed $nmDefault = null * @return mixed */ public function GetPost($sKey, $nmDefault = null) { return (isset($_POST[$sKey])) ? $this->_stripSlashesValue($_POST[$sKey]) : $nmDefault; } /** * @param string $sKey * @param mixed $nmDefault = null * @return mixed */ public function GetRequest($sKey, $nmDefault = null) { return (isset($_REQUEST[$sKey])) ? $this->_stripSlashesValue($_REQUEST[$sKey]) : $nmDefault; } /** * @param string $sKey * @param mixed $nmDefault = null * @return mixed */ public function GetCookie($sKey, $nmDefault = null) { return (isset($_COOKIE[$sKey])) ? $this->_stripSlashesValue($_COOKIE[$sKey]) : $nmDefault; } /** * @param string $sKey * @param mixed $nmDefault = null * @return mixed */ public function GetServer($sKey, $nmDefault = null) { return (isset($_SERVER[$sKey])) ? $_SERVER[$sKey] : $nmDefault; } /** * @param string $sKey * @param mixed $nmDefault = null * @return mixed */ public function GetEnv($sKey, $nmDefault = null) { return (isset($_ENV[$sKey])) ? $_ENV[$sKey] : $nmDefault; } /** * @return string */ public function ServerProtocol() { return $this->GetServer('SERVER_PROTOCOL', 'HTTP/1.0'); } /** * @return string */ public function GetMethod() { return $this->GetServer('REQUEST_METHOD', ''); } /** * @return bool */ public function IsPost() { return ('POST' === $this->GetMethod()); } /** * @return bool */ public function IsGet() { return ('GET' === $this->GetMethod()); } /** * @return string */ public function GetRawBody() { static $sRawBody = null; if (null === $sRawBody) { $sBody = @file_get_contents('php://input'); $sRawBody = (false !== $sBody) ? $sBody : ''; } return $sRawBody; } /** * @param string $sHeader * @return string */ public function GetHeader($sHeader) { $sResultHeader = ''; $sServerKey = 'HTTP_'.strtoupper(str_replace('-', '_', $sHeader)); $sResultHeader = $this->GetServer($sServerKey, ''); if (empty($sResultHeader) && function_exists('apache_request_headers')) { $sHeaders = @apache_request_headers(); if (isset($sHeaders[$sHeader])) { $sResultHeader = $sHeaders[$sHeader]; } } return $sResultHeader; } /** * @return string */ public function GetScheme() { return ('on' === strtolower($this->GetServer('HTTPS'))) ? 'https' : 'http'; } /** * @return bool */ public function IsSecure() { return ('https' === $this->GetScheme()); } /** * @return string */ public function GetHost() { $sHost = $this->GetServer('HTTP_HOST', ''); if (!empty($sHost)) { return $sHost; } $sScheme = $this->GetScheme(); $sName = $this->GetServer('SERVER_NAME'); $iPort = (int) $this->GetServer('SERVER_PORT'); return (('http' === $sScheme && 80 === $iPort) || ('https' === $sScheme && 443 === $iPort)) ? $sName : $sName.':'.$iPort; } /** * @param bool $bCheckProxy = true * @return string */ public function GetClientIp($bCheckProxy = true) { $sIp = ''; if ($bCheckProxy && null !== $this->GetServer('HTTP_CLIENT_IP', null)) { $sIp = $this->GetServer('HTTP_CLIENT_IP', ''); } else if ($bCheckProxy && null !== $this->GetServer('HTTP_X_FORWARDED_FOR', null)) { $sIp = $this->GetServer('HTTP_X_FORWARDED_FOR', ''); } else { $sIp = $this->GetServer('REMOTE_ADDR', ''); } return $sIp; } /** * @param int $iStatus * @return void */ public function StatusHeader($iStatus) { switch ($iStatus) { default: header('Status: '.$iStatus, true, $iStatus); break; case 304: header($this->ServerProtocol().' 304 Not Modified', true, $iStatus); break; case 200: header($this->ServerProtocol().' 200 OK', true, $iStatus); break; case 404: header($this->ServerProtocol().' 404 Not Found', true, $iStatus); break; } } /** * @param int $iExpireTime * @return bool */ public function ServerNotModifiedCache($iExpireTime, $bSetCacheHeader = true, $sEtag = '') { $bResult = false; if (0 < $iExpireTime) { $iUtcTimeStamp = (int) date('U'); $sIfModifiedSince = $this->GetHeader('If-Modified-Since', ''); if (empty($sIfModifiedSince)) { if ($bSetCacheHeader) { header('Cache-Control: public', true); header('Pragma: public', true); header('Last-Modified: '.gmdate('D, d M Y H:i:s', $iUtcTimeStamp - $iExpireTime).' UTC', true); header('Expires: '.date('D, j M Y H:i:s', $iUtcTimeStamp + $iExpireTime).' UTC', true); if (!empty($sEtag)) { header('Etag: '.$sEtag, true); } } } else { header("HTTP/1.1 304 Not Modified"); $bResult = true; } } return $bResult; } /** * @param mixed $mValue * @return mixed */ private function _stripSlashesValue($mValue) { if (!$this->bIsMagicQuotesOn) { return $mValue; } $sType = gettype($mValue); if ($sType === 'string') { return stripslashes($mValue); } else if ($sType === 'array') { $aReturnValue = array(); $mValueKeys = array_keys($mValue); foreach($mValueKeys as $sKey) { $aReturnValue[$sKey] = $this->_stripSlashesValue($mValue[$sKey]); } return $aReturnValue; } else { return $mValue; } } }