URL Clean
Usar reglas de parseo en htaccess es una practica muy común, normalmente para embellecer nuestros enlaces, pero hay veces que no podemos hacer uso de ellas y tenemos que pasar los argumentos como se hace normalmente (por GET).
Existe una alternativa y lo usan muchos scripts, es el pasar los argumentos por la variable PATH_INFO, con estos obtenemos casi los mismos resultados, digo casi porque en todo momento tenemos que indicar el nombre del archivo.
Ejemplo:
//El de toda la vida
www.miweb.com/index.php?id=12
//Con htaccess
www.miweb.com/id/12
//La alternativa
www.miweb.com/index.php/id/12
function htaccess() {
global $htaccess;
if(!$htaccess) {
$htaccess = array();
$arguments = explode('/',@$_SERVER['PATH_INFO']);
array_shift($arguments);
$htaccess['args'] = $arguments;
$i = 0;
foreach($arguments as $argument) {
$htaccess['value'][$argument] = @$arguments[++$i];
}
}
if($args=func_get_args()) {
$get = array ();
foreach($args as $arg) {
if(is_numeric($arg)) {
if(isset($_GET[$arg])) $get[$arg] = $_GET[$arg];
else $get[$arg] = isset($htaccess['args'][$arg]) ? $htaccess['args'][$arg] : '' ;
} else {
if(isset($_GET[$arg])) $get[$arg] = $_GET[$arg];
else $get[$arg] = isset($htaccess['value'][$arg]) ? $htaccess['value'][$arg] : '' ;
}
}
if(count($get) == 1) return join('',$get);
else return $get;
} else {
return $htaccess['args'];
}
}
Con esta función podemos acceder fácilmente tanto por GET como con PATH_INFO, se encarga de parsear y devolver los resultados según los argumentos que le pasemos.
Ejemplos de uso:
Obtener el parametro id:
htaccess(‘id’); //12
Obtener el parametro numero 2
htaccess(2); //12
Obtener varios parametros
htaccess(0,’id’); //array(0=>‘id’,’id’=>12)
Funciona tanto para la url www.miweb.com/index.php?id=12 como para www.miweb.com/index.php/id/12
Ver post
Comentar
David Martínez#1 hace 773 días
IceBeat#2 hace 773 días
Carlos#3 hace 112 días
Gracias por el articulo, llevaba tiempo buscando algo parecido