Helpers – Server – $_SERVER
El servidor donde esta alojada la aplicación contiene mucha información que nos puede ayudar. Toda esta información se guarda en la variable superglobal $_SERVER la cual puede ser consultada con esta librerÃa. Utiliza la función filter_input y filter_var para eliminar posibles errores.
/** * HelperServer.php * @author Code Develium */ namespace Helpers; /** * Class HelperServer */ abstract class HelpServer { /** * Devuelve el valor de una variable del array superglobal * $_SERVER * NOTA: filter_input para las opciones INPUT_SERVER y INPUT_ENV * no funcionan para FASTCGI * Si la variable no existe, devuelve '' (string vacÃo) * * @param string $key * * @return string */ public static function getValue($key) { if (filter_has_var(INPUT_SERVER, $key)) { $value = filter_input( INPUT_SERVER, $key, FILTER_SANITIZE_STRING); } else { $value = ''; if (array_key_exists($key, $_SERVER)) { $value = filter_var( $_SERVER[ $key ], FILTER_SANITIZE_STRING, null); } return $value; } if ($value === false || is_null($value)) { return ''; } return $value; } /** * Comprueba si el navegador soporta compresión con gzip * @return bool */ public static function compresionZip() { $acceptEnc = HelpServer::getValue( 'HTTP_ACCEPT_ENCODING'); return (stripos( $acceptEnc, 'gzip') >= 0 || stripos($acceptEnc, 'x-gzip') >= 0 ); } /** * Devuelve un valor de un parámetro de la query_string. * Devuelve null si no existe * * @param $parametro * * @return bool|mixed */ public static function getQueryStringParam($parametro) { $matches = array(); $qs = self::getQueryString(); $number = preg_match( "/{$parametro}=([a-zA-Z0-9_-]+)[&]?/", $qs, $matches); if ($number) { return ''.$matches[ 1 ]; } else { return null; } } /** * Devuelve un array con los parametros y valores de la * query_string * @return array */ public static function getQueryStringParams() { $qs = self::getQueryString(); if (HelpValidate::isEmpty($qs)) { return []; } $arrayTmp = []; $arrayParams = explode('&', $qs); foreach ($arrayParams as $key => $value) { $b = explode('=', $arrayParams[ $key ]); $arrayTmp[ $b[ 0 ] ] = $b[ 1 ]; } return $arrayTmp; } /** * Devuelve la query string completa de la url * @return string */ public static function getQueryString() { return self::getValue('QUERY_STRING'); } /** * Devuelve el Dominio Http/https del servidor * @return string */ public static function getDominioHttp() { $httpHost = self::getValue('HTTP_HOST'); if (empty($httpHost)) { return ''; } $https = self::getValue('HTTPS'); if (empty($https)) { $protocol = 'http'; } else { $protocol = ($https != "off") ? "https" : "http"; } return $protocol."://".$httpHost; } /** * Devuelve el path del servidor. * @return mixed */ public static function getDocumentRoot() { return self::getValue('DOCUMENT_ROOT'); } /** * Devuelve un array con todos los valores de la variable * superglobal $_SERVER * NOTA: filter_input para las opciones INPUT_SERVER y INPUT_ENV * no funcionan para FASTCGI * @return array */ public static function getAllValues() { $ret = []; foreach (array_keys($_SERVER) as $key) { $exists = filter_has_var(INPUT_SERVER, $key); if ($exists) { $value = filter_input(INPUT_SERVER, $key); } else { $value = filter_var( $_SERVER[ $key ], FILTER_DEFAULT, null); } $ret[ $key ] = $value; } return $ret; } /** * Devuelve el usuario y contraseña procedentes del dialogo de * autenticación. * $_SERVER['PHP_AUTH_USER'] y $_SERVER['PHP_AUTH_PW'] * * @param string $usuario * @param string $psw */ public static function getAutenticacion(&$usuario, &$psw) { $usuario = self::getValue('PHP_AUTH_USER'); $psw = self::getValue('PHP_AUTH_PW'); } }