La técnica consiste en tomar todas las variables $_POST, procesar las que se consideren adecuadas y redireccionar las mismas variables a través de un $_GET. Esto funciona bien cuando hacemos formularios de búsqueda que generan un listado, al que luego de hacer click en algún item se redirecciona a un nuevo enlace.
El código puede ser escrito como en el siguiente ejemplo:
function EstandarizarQueryString
($excepciones = "") {
if(!is_array($excepciones))
$excepciones = array($excepciones);
$est = array();
$querystring = "";
foreach($_GET as $key => $value) $est[$key] = $value;
foreach($_POST as $key => $value) $est[$key]=$value;
foreach($est as $key => $value) {
if(!in_array($key,$excepciones)) {
if(!empty($value) && $value!="0" && $value!="null") $querystring.="&".$key."=".urlencode($value);
}
}
return substr($querystring,1);
}
Una vez implementada esta funcion, se pueden reescribir los URL y manejar todos (o algunos) de los parametros REQUEST de la página de la siguiente manera:
Con esto se evita una reconfirmación del POST cuando se ejecuta un evento history.back o cuando se pulsa el botón "Atrás" del navegador (Generalmente pasa en IE).
if($_POST && !$_POST['botonexcepcion']) {
header("location: ".basename($_SERVER['PHP_SELF'])."?".EstandarizarQueryString());
exit();
}
// Aqui se manejan todos los parametros por $_GET ...
No hay comentarios:
Publicar un comentario