Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/10/2009, 10:30
samu22
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: Duda con Url Amigas

Cita:
Iniciado por mark_ant0n Ver Mensaje
Tengo una pagina web que la e construido modularizada, de tal forma que tengo un index.php en la raiz, y en ese index se abren todos los modulos. por ejemplo en mi url cuando entro al modulo de articulos queda asi.
Código url:
Ver original
  1. http://localhost/carpeta/?mod=mod_art&opcion=inicio
Y cuando necesito entrar a ver un articulo dinamicamente lo llamo asi
Código url:
Ver original
  1. http://localhost/carpeta/?mod=mod_art&opcion=mostrar&item=30
Ahora bien al codificar el .httacces, servira para todos mis modulos, es decir si necesito entrar a otro modulo por ejemplo a publicidad, serviria o seria un .httacces por modulo?, cada modulo esta en su propia carpeta. Ejem: ./modulos/mod_art/index.php
Código url:
Ver original
  1. http://127.0.0.1/carpeta/?mod=mod_publ&opcion=empresas&id=12
Si se pudiera un ejemplo de como seria, gracias por su ayuda
Hola como va, ro lo utiliza de la siguiente manera

-> el primer parametro es el controlador de la aplicacion, por ejemplo articulos, por ejemplo articulos

-> el segundo parametro llama a la funcion del controlador, por ejemplo index, mostrar

luego paso parametros adicionales al controlador ejemplo id/2

lo que obtengo es una url como

mihost.com/articulos/listar

mihost.com/articulos/ver/id/1

mihost.com/articulos/ver/id/1/p/1

para llamar a los metodos utilizo un conector que funciona como un enrutador adaptado para tu funcuinamiento quedaria algo asi

Código php:
Ver original
  1. <?php      
  2.     class conector{
  3.                   function iniciar(){
  4.                                 require'config/configs',
  5.                                 require 'librerias/router.php';
  6.  
  7.                           // getVariables es una funcion del archivo router.php  
  8.                           $_GET = getVariables($_GET['route']);
  9.                          
  10.                           //definimos un modulo por defecto en el caso que no se encontrara definido ninguno
  11.                            if(!empty($_GET[0])){
  12.                     //$_GET[0] devolvera el nombre del modulo, para darle una mayor estetica solo usaremos el nombre del mismo y a la hora de llamarlo le agregaremos el el prefijo mod_ sufijo .php
  13.                                     $nombre = 'mod_'.$_GET[0].'.php';
  14.                 }else{
  15.                     $nombre = 'mod_index.php';
  16.                 }  
  17.                                
  18.                             if(file_exists($nombre)){
  19.                                  include($nombre);
  20.                             }else{
  21.                                  include('mod_index.php');
  22.                             }
  23.             } // end iniciar
  24. }

router.php
Código php:
Ver original
  1. function getVariables($url)
  2. {
  3.  
  4.     //quitamos la barra del final
  5.     $url = preg_replace('/\/$/', '', $url);
  6.  
  7.     //separamos las partes de la url y las contamos
  8.     $partes = explode('/', $url);
  9.     $cantPartes = count($partes);
  10.  
  11.     //si la cantidad de partes no es par retornamos false, al ser impar una variable se quedaria sin valor y esto no es posible
  12.    
  13.     if($cantPartes == 1){
  14.         return  $partes;
  15.     }
  16.     if($cantPartes % 2 != 0)
  17.         return false;
  18.    
  19.     $variables = array();
  20.    
  21.     //nombre del modulo
  22.     $variables[0] = limpiar($partes[0]);
  23.    
  24.     for($c = 0; $c < $cantPartes; $c = $c + 2)
  25.     {
  26.         //Acumulamos los pares de valores(para nosotros variables) en el arreglo
  27.         $nombre = limpiar($partes[$c]);
  28.         $valor = limpiar($partes[$c + 1]);
  29.         $variables[$nombre] = $valor;
  30.     }
  31.  
  32.     return $variables;
  33.    
  34. }
  35.  
  36. function limpiar($valor)
  37. {  
  38.     return $valor;
  39.     //permitimos solo letras(a-Z), numeros y guiones
  40.     return preg_replace('/[^a-zA-Z0-9-_%]/', '', $valor);
  41. }

.htacces
Código htacces:
Ver original
  1. <IfModule mod_rewrite.c>
  2.     RewriteEngine On
  3.     RewriteCond %{REQUEST_FILENAME} !-d
  4.     RewriteCond %{REQUEST_FILENAME} !-f
  5.     RewriteRule ^(.*)$ index.php?route=$1 [QSA,L]
  6.    
  7. </IfModule>

y por ultimo el index.php

Código php:
Ver original
  1. <?php
  2. require 'librerias/conector.php';
  3. conector::iniciar();
  4.  
  5. ?>