Leitgedanken/msd2/myoos/includes/functions/function_compatibility.php
2023-01-23 11:03:31 +01:00

221 lines
6.5 KiB
PHP

<?php
/* ----------------------------------------------------------------------
MyOOS [Shopsystem]
https://www.oos-shop.de
Copyright (c) 2003 - 2019 by the MyOOS Development Team.
----------------------------------------------------------------------
Based on:
File: compatibility.php,v 1.22 2004/07/22 16:36:22 hpdl
compatibility.php,v 1.18 2003/02/11 01:31:01 hpdl
compatibility.php 1498 2007-03-29 14:04:50Z hpdl $
----------------------------------------------------------------------
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2007 osCommerce
----------------------------------------------------------------------
Released under the GNU General Public License
---------------------------------------------------------------------- */
/**
* For compatibility
*
* @package core
* @access public
*
* @author r23 <info@r23.de>
* @since OOS 1.3.1
*/
/** ensure this file is being included by a parent file */
defined( 'OOS_VALID_MOD' ) OR die( 'Direct Access to this location is not allowed.' );
/**
* Forcefully disable register_globals if enabled
*
* Based from work by Richard Heyes (http://www.phpguru.org)
*/
if ((int)ini_get('register_globals') > 0) {
if (isset($_REQUEST['GLOBALS'])) {
die('GLOBALS overwrite attempt detected');
}
$noUnset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES');
$input = array_merge($_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
foreach ($input as $k => $v) {
if (!in_array($k, $noUnset) && isset($GLOBALS[$k])) {
$GLOBALS[$k] = NULL;
unset($GLOBALS[$k]);
}
}
unset($noUnset);
unset($input);
unset($k);
unset($v);
}
/**
* Forcefully disable magic_quotes_gpc if enabled
*
* @link https://www.oos-shop.dedoc/php_manual_de/html/security.magicquotes.disabling.html
*/
if (get_magic_quotes_gpc()) {
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);
return $value;
}
$_POST = array_map('stripslashes_deep', $_POST);
$_GET = array_map('stripslashes_deep', $_GET);
$_COOKIE = array_map('stripslashes_deep', $_COOKIE);
$_REQUEST = array_map('stripslashes_deep', $_REQUEST);
}
/**
* Fix for PHP as CGI hosts that set SCRIPT_FILENAME to
* something ending in php.cgi for all requests
*/
if (strpos(php_sapi_name(), 'cgi') !== FALSE) {
// $_SERVER['SCRIPT_FILENAME'] = $_SERVER['PATH_TRANSLATED'];
}
/**
* Fix for Dreamhost and other PHP as CGI hosts
*/
if (strpos($_SERVER['SCRIPT_NAME'], 'php.cgi') !== FALSE) {
unset($_SERVER['PATH_INFO']);
}
/**
* Replace file_get_contents()
*
* @category PHP
* @package PHP_Compat
* @link http://php.net/function.file_get_contents
* @author Aidan Lister <aidan - php - net>
* @version $Revision: 1.12 $
* @internal resource_context is not supported
* @since PHP 5
*/
if (!function_exists('file_get_contents')) {
function file_get_contents($filename, $incategory = FALSE, $resource_context = null) {
if (false === $fh = fopen($filename, 'rb', $incategory)) {
user_error('file_get_contents() failed to open stream: No such file or directory', E_USER_WARNING);
return FALSE;
}
clearstatcache();
if ($fsize = @filesize($filename)) {
$data = fread($fh, $fsize);
} else {
$data = '';
while (!feof($fh)) {
$data .= fread($fh, 8192);
}
}
fclose($fh);
return $data;
}
}
/**
* checkdnsrr() not implemented on Microsoft Windows platforms
*/
if (!function_exists('checkdnsrr')) {
function checkdnsrr($host, $type) {
if(!empty($host) && !empty($type)) {
@exec('nslookup -type=' . escapeshellarg($type) . ' ' . escapeshellarg($host), $output);
foreach ($output as $k => $line) {
if(preg_match('/^' . $host . '/i', $line)) {
return TRUE;
}
}
}
return FALSE;
}
}
if (!function_exists('http_response_code')) {
function http_response_code($code = NULL) {
if ($code !== NULL) {
switch ($code) {
case 100: $text = 'Continue'; break;
case 101: $text = 'Switching Protocols'; break;
case 200: $text = 'OK'; break;
case 201: $text = 'Created'; break;
case 202: $text = 'Accepted'; break;
case 203: $text = 'Non-Authoritative Information'; break;
case 204: $text = 'No Content'; break;
case 205: $text = 'Reset Content'; break;
case 206: $text = 'Partial Content'; break;
case 300: $text = 'Multiple Choices'; break;
case 301: $text = 'Moved Permanently'; break;
case 302: $text = 'Moved Temporarily'; break;
case 303: $text = 'See Other'; break;
case 304: $text = 'Not Modified'; break;
case 305: $text = 'Use Proxy'; break;
case 400: $text = 'Bad Request'; break;
case 401: $text = 'Unauthorized'; break;
case 402: $text = 'Payment Required'; break;
case 403: $text = 'Forbidden'; break;
case 404: $text = 'Not Found'; break;
case 405: $text = 'Method Not Allowed'; break;
case 406: $text = 'Not Acceptable'; break;
case 407: $text = 'Proxy Authentication Required'; break;
case 408: $text = 'Request Time-out'; break;
case 409: $text = 'Conflict'; break;
case 410: $text = 'Gone'; break;
case 411: $text = 'Length Required'; break;
case 412: $text = 'Precondition Failed'; break;
case 413: $text = 'Request Entity Too Large'; break;
case 414: $text = 'Request-URI Too Large'; break;
case 415: $text = 'Unsupported Media Type'; break;
case 500: $text = 'Internal Server Error'; break;
case 501: $text = 'Not Implemented'; break;
case 502: $text = 'Bad Gateway'; break;
case 503: $text = 'Service Unavailable'; break;
case 504: $text = 'Gateway Time-out'; break;
case 505: $text = 'HTTP Version not supported'; break;
default:
exit('Unknown http status code "' . htmlentities($code) . '"');
break;
}
$protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0');
header($protocol . ' ' . $code . ' ' . $text);
$GLOBALS['http_response_code'] = $code;
} else {
$code = (isset($GLOBALS['http_response_code']) ? $GLOBALS['http_response_code'] : 200);
}
return $code;
}
}