Alternativa a pasar variables por get.
En este tutorial usted va a aprender una manera de pasar variables a una pagina php simulando que navega a través de directorios.
Nivel de dificultad: Conocimientos básicos de PHP, y conocimientos básicos sobre configuración de Apache.
Introducción:
Imagine que esta construyendo un lector de noticias, este lector de noticias esta formado por una pagina que muestra un listado de los títulos de las noticias ordenadas cronológicamente y una segunda pagina que nos muestra la noticia seleccionada de forma completa. Para mostrar la noticia completa necesitamos tener un identificador único para la noticia, esto nos sirve para poder recuperar la noticia de la base de datos, esto se hace pasando el valor de este identificador a la pagina usando el método get, el método post o usando una variable de sesión.
Por ejemplo:
http://www.midominio.com/noticias/mostrar_noticia?id=456
En este ejemplo estamos usando el método get para pasar la variable id con el valor 456. Usted puede pasar la variable usando el método post o mediante una variable de sesión, pero esto dará problemas a la hora de indexar la web en buscadores y sus usuarios no podrán añadirla a favoritos al no quedar constancia en la url del valor de la variable.
Ahora imagine que puede hacer lo mismo pero simular que esta accediendo a un directorio, por ejemplo:
http://www.midominio.com/noticias/456
Esta dirección parece más elegante y más fácil de recordar, pero no es lo ‘típico’ en una web dinámica, donde los datos se recuperan del servidor a partir de variables.
Me dispongo a mostrarle una técnica que le permitirá pasar variables a una url especifica, de cara al usuario parecerá que se navega a través de directorios, pero usted estará enviando variables a un script PHP. Las direcciones de su web serán más cortas, menos confusas y por tanto más fáciles de recordar y el envío de variables será transparente al usuario.
Manos a la obra:
En un servidor Apache los archivos nombrados como ‘.htaccess’ se usan para configurar de forma particular el servidor si no se tiene acceso al fichero de configuración. Esta configuración afecta al directorio donde situemos el archivo y es heredada por todos los subdirectorios de este.
Lo primero que vamos a hacer es crear un archivo de texto con el nombre ‘.htaccess’ (si estas trabajando en Windows puede que no puedas usar ese nombre, súbelo por ftp al servidor y renombralo).
Una vez creado edítalo con cualquier editor de texto y escribe lo siguiente:
RewriteEngine on
RewriteBase /noticias/
RewriteRule ^.*$ mostrar.phpEsto hace lo siguiente:
RewriteEngine on : Activa el motor de reescritura en tiempo de ejecución de Apache. Para mas información sobre la directiva RewriteEngine:
http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteEngine
RewriteBase /noticias/ :Esta directiva configura ‘/noticias/’ como el directorio base de reescritura . Para mas información sobre la directiva RewriteBase:
http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteBaseRewriteRule ^.*$ mostrar.php : Esto hace que todas las direcciones que están dentro del directorio ‘/noticias/’(existan o no) abran el archivo ‘mostrar.php’ que es el que usaremos para leer las variables. Este archivo lo pondremos en el mismo directorio ‘/noticias/’. Para mas información sobre la directiva RewriteRule:
http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteRuleVamos crear el archivo mostrar.php, este archivo es el que se ejecuta cada vez que se intenta acceder a cualquier directorio dentro de ‘/noticias/’. Este archivo contendrá lo siguiente:
$aux = substr( $_SERVER['REQUEST_URI'], strlen(‘/noticias/’));
if( substr( $aux, -1) == '/'){
$aux = substr( $aux, 0, -1);
}$variables explode( '/', $aux);
//resto del codigo.Ahora tenemos las variables dentro del array ‘$variables’. Para comprender como están dispuestas estas variables dentro del array y como se pasan exactamente las variables voy a poner varios ejemplos:
Si escribimos:
http://www.midominio.com/noticias/456
Se ejecutara mostrar.php y dentro de $variables podremos encontrar lo siguiente:
echo $variables[0] ;//devuelve 456Para:
http://www.midominio.com/noticias/programacion/43Se ejecutara mostrar.php y dentro de $variables podremos encontrar lo siguiente:
echo $variables[0] ;//devuelve programacion
echo $variables[1] ;//devuelve 43Siempre que se llame a un subdirectorio o archivo dentro de ‘/noticias/’ se ejecutara el archivo mostrar.php, y este actuara introduciendo dentro de $variables un elemento por cada ‘/’ que se encuentre en la URI dada a partir de ‘/noticias/’.
Espero que este articulo le haya sido de utilidad.
Software Necesario:
Para descargar el servidor web Apache:
http://httpd.apache.org/Para descargar PHP:
http://www.php.net/downloads.phpSi usted trabaja bajo Windows y desea instalar de manera fácil un entorno para poder trabajar con PHP y Apache, puede descargar Appserv. Appsrev es un paquete que instala en su Sistema el servidor wed Apache, PHP y el servidor de bases de datos MySql de manera automática sin necesidad de configurar de manera manual ningún parámetro. Para descargarlo:
http://www.appservnetwork.com/
Para ampliar información:
Sobre los archivos .htaccess
http://httpd.apache.org/docs/howto/htaccess.html
http://www.javascriptkit.com/howto/htaccess.shtmlSobre la reescritura de URLs en tiempo de ejecución usando Apache:
http://httpd.apache.org/docs/mod/mod_rewrite.html
http://www.engelschall.com/pw/apache/rewriteguide/Manual de PHP en español:
http://www.php.net/manual/es/index.php
