Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2009, 12:24
eurodoblon
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 16 años, 3 meses
Puntos: 0
url amigables

Buenos días.

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">&nbsp;</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
?>