222 lignes
8 Kio
PHP
222 lignes
8 Kio
PHP
<?php
|
|
namespace App\Http\Utility;
|
|
|
|
/**
|
|
* Classe contenant quelques fonctions utiles concernant l'hôte
|
|
*/
|
|
class hostUtility{
|
|
|
|
/**
|
|
* Récupère le nom d'hôte
|
|
*
|
|
* @return string : Nom de l'hôte
|
|
*/
|
|
public static function getBaseUrl(){
|
|
return self::getUriProtocol().'://'.self::getHostName();
|
|
}
|
|
|
|
/**
|
|
* Récupère le nom d'hôte
|
|
*
|
|
* @return string : Nom de l'hôte
|
|
*/
|
|
public static function getHostName(){
|
|
return filter_input(INPUT_SERVER,'HTTP_HOST',FILTER_SANITIZE_URL);
|
|
}
|
|
|
|
/**
|
|
* Récupère l'IP de l'hôte
|
|
*
|
|
* @return string : Adresse IP
|
|
*/
|
|
public static function getIP(){
|
|
return filter_input(INPUT_SERVER,'REMOTE_ADDR',FILTER_SANITIZE_STRING);
|
|
}
|
|
|
|
/**
|
|
* Récupère la page courante de l'url
|
|
*
|
|
* @return string : page en cours
|
|
*/
|
|
public static function getPageLocation($defaultPageLocation='index.php'){
|
|
$requestURI = filter_input(INPUT_SERVER,'REQUEST_URI',FILTER_SANITIZE_URL);
|
|
$requestURIWithoutQueryString = strtok($requestURI,'?');
|
|
$curPathPageLocationURI = trim($requestURIWithoutQueryString,'/');
|
|
$arrCurPageLocationURI = explode('/',$curPathPageLocationURI);
|
|
$curPageLocation = end($arrCurPageLocationURI);
|
|
return ($curPageLocation=='') ? $defaultPageLocation : $curPageLocation;
|
|
}
|
|
|
|
/**
|
|
* Récupère le chemin de la page courante de l'url
|
|
*
|
|
* @return string : chemin page en cours
|
|
*/
|
|
public static function getUriPageLocation($defaultUriPageLocation='index.php'){
|
|
$requestURI = filter_input(INPUT_SERVER,'REQUEST_URI',FILTER_SANITIZE_URL);
|
|
$requestURIWithoutQueryString = strtok($requestURI,'?');
|
|
$curUriPageLocation = trim($requestURIWithoutQueryString,'/');
|
|
return ($curUriPageLocation=='') ? $defaultUriPageLocation : $curUriPageLocation;
|
|
}
|
|
|
|
|
|
/**
|
|
* Récupère le port utilisé par la machine cliente
|
|
*
|
|
* @return int : n° de port
|
|
*/
|
|
public static function getRemotePort(){
|
|
return filter_input(INPUT_SERVER,'REMOTE_PORT',FILTER_SANITIZE_NUMBER_INT);
|
|
}
|
|
|
|
|
|
/**
|
|
* Récupère l'URI qui a été fourni pour accéder à la page courante
|
|
*
|
|
* @param boolean $urlEncode : Indique si la chaîne de retour doit être
|
|
* encodée, ou non, via urlencode().
|
|
* @return string : URI de la page courante.
|
|
*/
|
|
public static function getRequestUri($urlEncode=true){
|
|
$requestURI = filter_input(INPUT_SERVER,'REQUEST_URI',FILTER_SANITIZE_URL);
|
|
$str = trim($requestURI,'/');
|
|
return ($urlEncode===true) ? urlencode($str) : $str;
|
|
}
|
|
|
|
|
|
/**
|
|
* Récupère le port utilisé par le serveur
|
|
*
|
|
* @return int : n° de port
|
|
*/
|
|
public static function getServerPort(){
|
|
return filter_input(INPUT_SERVER,'SERVER_PORT',FILTER_SANITIZE_NUMBER_INT);
|
|
}
|
|
|
|
|
|
/**
|
|
* Récupère le protocole utilisé par le serveur
|
|
*
|
|
* @return string : http / https
|
|
*/
|
|
public static function getUriProtocol(){
|
|
return ((filter_input(INPUT_SERVER, 'HTTPS', FILTER_SANITIZE_STRING) === 'on') || self::getServerPort() === 443) ? 'https' : 'http';
|
|
}
|
|
|
|
/**
|
|
* Récupère le nom du client HTML utilisé pour voir la page courante.
|
|
*
|
|
* @return string : Nom du navigateur
|
|
*/
|
|
public static function getUserAgent(){
|
|
return filter_input(INPUT_SERVER,'HTTP_USER_AGENT',FILTER_SANITIZE_STRING);
|
|
}
|
|
|
|
/**
|
|
* Récupère l'IP de l'hôte
|
|
*
|
|
* @param int $level 1-4 : Indique combien de blocs de l'adresse IP
|
|
* doivent être retournés. 4 retourne toute l'IP,
|
|
* 1 uniquement les premiers chiffres.
|
|
* @return string : Adresse IP (partielle) depuis REMOTE_ADDR
|
|
*/
|
|
public static function getIPPartLevel($level){
|
|
$IP = self::getIP();
|
|
|
|
if ($level >= 4) {
|
|
return $IP;
|
|
} else {
|
|
$IPparts = explode('.', $IP);
|
|
for ($bloc = 4; $bloc > $level; $bloc--) {
|
|
unset($IPparts[$bloc - 1]);
|
|
}
|
|
return implode('.', $IPparts);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Récupère le nom d'hôte
|
|
*
|
|
* @return string : Nom de l'hôte
|
|
*/
|
|
public static function setLocation($page=''){
|
|
$location = self::getBaseUrl();
|
|
$location .= (is_null($page) || trim($page) == '') ? '' : '/'.trim($page,'/');
|
|
header('Location: '.$location);
|
|
}
|
|
|
|
/**
|
|
* Récupère la valeur d'un paramètre passé en GET
|
|
*
|
|
* @return mixed : Soit une chaîne, soit un tableau;
|
|
*/
|
|
public static function _GET($var = null) {
|
|
$val = ($var === null) ? $_GET : (empty($var) ? null : $_GET[$var]);
|
|
return (isset($val) && !is_array($val)) ? (string)$val : $val;
|
|
}
|
|
|
|
/**
|
|
* Récupère la valeur d'un paramètre passé en POST
|
|
*
|
|
* @return mixed : Soit une chaîne, soit un tableau;
|
|
*/
|
|
public static function _POST($var = null) {
|
|
$val = ($var === null) ? $_POST : (empty($var) ? null : $_POST[$var]);
|
|
return (isset($val) && !is_array($val)) ? (string)$val : $val;
|
|
}
|
|
|
|
/**
|
|
* Vérification de l'IP de l'hôte en fonction d'une série d'IPs à
|
|
* comparer.
|
|
*
|
|
* @param mixed $IPs : Tableau d'IPs ou chaîne d'IPs à comparer.
|
|
* @return boolean : Vrai si l'IP correspond
|
|
*/
|
|
public static function checkIps($IPs){
|
|
$IP = self::getIP();
|
|
$arrIPs = (is_array($IPs)) ? $IPs : explode(',', $IPs);
|
|
$checked = true;
|
|
|
|
foreach($arrIPs as $ip){
|
|
|
|
$IPpartsSource = explode('.',$ip);
|
|
$IPpartsToCompare = explode('.',$IP);
|
|
|
|
$checked = true;
|
|
|
|
foreach($IPpartsSource as $bloc => $blocIpSource){
|
|
if ($blocIpSource != '*' && $blocIpSource != $IPpartsToCompare[$bloc]){
|
|
$checked = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ($checked) break;
|
|
}
|
|
|
|
return $checked;
|
|
}
|
|
|
|
/**
|
|
* Contruction d'une uri complète en fonction des données passées en
|
|
* paramètre.
|
|
*
|
|
* @param mixed $url : URL principale.
|
|
* @param mixed $queryData : Soit une chaîne, soit un tableau de
|
|
* paramètres servant à générer la queryString.
|
|
* @return mixed : Soit une URI, soit FALSE
|
|
*/
|
|
public static function buildUrl($url=null, $queryData = null){
|
|
if(!is_null($url)){
|
|
$queryString = '';
|
|
if (!empty($queryData)) {
|
|
$queryMark = strpos($url, '?') > 0 ? '&' : '?';
|
|
(is_string($queryData)) ? $queryString .= $queryMark . $queryData : null;
|
|
(is_array($queryData)) ? $queryString .= $queryMark . http_build_query($queryData, '', '&') : null;
|
|
}
|
|
return $url . $queryString;
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
}
|