You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
2.8 KiB

<?php
class LE_REQUEST {
public static function url2arr($s=false, $use_forwarded_host = false)
{
if ($s===false) $s = $_SERVER;
$res = [];
$ssl = (isset($s['HTTPS']) && $s['HTTPS'] == 'on' );
$port = (isset($s['SERVER_PORT'])) ? $s['SERVER_PORT'] : '80';
//хак для ssl nginx->apache
/*
if ((!$ssl) && function_exists('apache_request_headers'))
{
$h = apache_request_headers();
if (is_array($h) && isset($h['Nginx-Https']) && $h['Nginx-Https']=='on')
{
$ssl=true; $port=443;
}
}
*/
$protocol = strtolower($s['SERVER_PROTOCOL']);
$scheme = substr( $protocol, 0, strpos( $protocol, '/' ) ) . ( ( $ssl ) ? 's' : '' );
$standart_port = ((!$ssl && $port=='80') || ($ssl && $port=='443'));
$host="locahost";
if ($use_forwarded_host && isset( $s['HTTP_X_FORWARDED_HOST'] ))
$host = $s['HTTP_X_FORWARDED_HOST'];
elseif (isset( $s['HTTP_HOST']))
$host = $s['HTTP_HOST'];
elseif (isset( $s['SERVER_NAME']))
$host = $s['SERVER_NAME'];
$host_full = ($standart_port) ? $host : ($host.":".$port);
$query= isset($s['REQUEST_URI']) ? $s['REQUEST_URI'] : '';
$query_clr = preg_replace('!\?.*?$!','',$query);
return compact('ssl','port','scheme','standart_port','host','host_full','query','query_clr','protocol');
}
public static function TYPE_DETECT()
{
if (!isset($_SERVER["CONTENT_TYPE"])) return false;
$type = trim(explode(';',$_SERVER["CONTENT_TYPE"])[0]);
$type = PRE::DOWN($type);
if ($type=='application/json') return 'json';
return false;
}
public static function get2str($cust_get=null)
{
$get= (is_null($cust_get)) ? $_GET : $cust_get;
if (!is_array($get) || !count($get)) return '';
$arr = [];
foreach ($get as $k => $v)
$arr[] = $k.'='.$v;
return '?'.implode('&',$arr);
}
public static function str2get($q="")
{
if(empty($q)) return false;
$q = explode('&',$q);
$out=[];
$c = count($query);
for ($i=0;$i<$c;$i++)
{
$r=explode('=',$q[$i]);
if(!isset($r[1])) $r[1]='';
$out[$r[0]]=$r[1];
}
return $out;
}
public static function MOVE($u)
{
http_response_code(301);
header("Location: ".$u);
exit();
}
public static function FIX_URLCASE($u)
{
$q = arr_v($u,'query','');
if(empty($q)) return false;
if (PRE::SHIFT($q,'DOWN')!=$q)
LE_URL::MOVE(PRE::SHIFT($u['full'],'DOWN'));
}
}