Tengo el siguiente script para convertir url, pero solo me reconoce la última variable .
Me explico: Por el método get paso vasriables del formulario a la magina index.php.
Cuando lo hago con la url normal pasa bien las 4 variables, pero cuando aplico el script de conversión sólo pasa la ùltima
¿Podeís ayudarme?
Gracias y un saludo.
Options +FollowSymLinks
RewriteEngine on
#4 variables
Rewriterule ^(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/(.*),(.*)/$ $1.php?$2=$3&$4=$5&$6=$7&$8=$9
Código PHP:
<?php
session_name("url_amigable");
session_start();
//Almacenamos datos del server, script y variables (pasadas por GET)
$Server=$_SERVER['SERVER_NAME'];
$Script=$_SERVER['PHP_SELF'];
$Variables=$_SERVER['QUERY_STRING'];
//Verificando si tiene variables por GET
//y no se han pasado datos mediante un form por POST
//ya q al redireccionar un post puede ocasionar errores.
//Tambien verificamos que la variable de sesión 'Listo'
//sea diferente a 1, esto nos eviara un bucle infinito.
if(!empty($Variables) && $_SERVER['REQUEST_METHOD']=='GET' && $_SESSION['Listo']!=1){
//Si tiene variables pasadas por GET se procede a hacer el cambio.
//1. Agrupando $Variables por "variable=valor" en el array $Variable.
$Variable=explode("&",$Variables);
//2. Sustituyendo "=" por "," y concadenandolo en variable $Amigable.
for($i=0;$i<count($Variable);$i++){
$Amigable.="/".str_replace("=",",",$Variable[$i]);
}
//3. Quitando la extension ".php" a $Script para simular un directorio.
$Dir=str_replace(".php","",$Script);
//4. Generando la URL Amigable.
$URL_AMIGABLE="http://".$Server.$Dir.$Amigable."/";
//5. Colocando la variable de sesión 'Listo' a 1 para evitar el bucle infinito
// al redireccionar la web.
$_SESSION['Listo']=1;
//6. Redireccionando a la url amigable
header("Location: $URL_AMIGABLE");
//7. Exit hará que culmine hasta este punto el script, si no estuviera 'exit'
// el script continuaría ejecutándose y llegaría hasta el final del mismo, es decir,
// a la parte donde colocamos a la variable de sesión 'Listo' en cero, originandose
// entonces un bucle infinito.
exit;
}
//Cambie $_URL_BASE por la ruta raiz de su web, ya que al simular la url amigable
//directorios, hará que no muestre adecuadamente los origenes de los recursos que
//llama su página web.
$_URL_BASE="http://".$Server."/pruebas/index.php";
?>
<html>
<head>
<base href="<? echo $_URL_BASE;?>" target="_top" />
<form action="index.php" method="get" name="form1" id="form1">
<table align="center">
<tr valign="baseline">
<td nowrap="nowrap" align="right">localidad:</td>
<td><input name="localidad" type="text" id="localidad" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">provincia:</td>
<td><input name="restaurante" type="text" id="restaurante" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">cocina</td>
<td><input name="cocina" type="text" id="cocina" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right">precio:</td>
<td><input name="preciocarta" type="text" id="preciocarta" value="" size="32" /></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right"> </td>
<td><input type="submit" value="Insertar registro" /></td>
</tr>
</table>
</form>
<?php
//Limpia el Posible Bucle, es decir se puede volver a hacer el envio
$_SESSION['Listo']=0;
?>