sábado, 4 de septiembre de 2010

MVC en PHP 5 POO Segunda Parte.

_ Siguiendo con la segunda parte de este Construccion de un sistema MVC en PHP Parte 1 , veremos el archivo .htaccess, la seguridad en el, el mod_rewrite, el uso de PDO en la capa modelo, además veremos el uso de SQL standar, optimización de consultas, uso de consultas preparadas, lanzamiento y catcheo de errores, y la optimización de la web para vernos bien en PageSpeed.

Empezemos entonces con el archivo .htaccess:

Este archivo es muy importante en nuestro sistema, nos servirá para el uso de url amigables a los navegadores, incrementar la seguridad de nuestro site, optimización, nos servira tambien para ocultar directorios sensitivos de nuestra aplicación, diseñar a nuestro gusto una pagina de error, en caso algún geek intente algo indebido en nuestro site.

.htaccess

ErrorDocument 404 404.php


Options -Multiviews
RewriteEngine On
RewriteBase /
RewriteRule ^configs/(.*)$ - [L]
RewriteRule ^includes/(.*)$ - [L]
RewriteRule ^data/(.*)$ - [L]
RewriteRule ^models/(.*)$ - [L]
RewriteRule ^views/(.*)$ - [L]
RewriteRule ^controllers/(.*)$ - [L]
ewriteRule ^([0-9a-z_-]+)/?$ index.php?controller=$1 [L,QSA]
RewriteRule ^([0-9a-z_-]+)/([^/]+)/?$ index.php?controller=$1&action=$2 [L,QSA]

AddCharset UTF-8 .php


_ La primera linea especifica que el archivo que se mostrara en caso de un error 404, sera el archivo 404.php
Antes de seguir explicando aquí debes de tener un servidor que soporte el mod_rewrite, para activar esto en nuestro servidor local con appserver corriendo debeis abrir el archivo httpd.conf de apache en un block de notas y modificar 2 lineas donde dice Override None cambiar la palabra none por all, y luego abre el archivo php.ini que el appserver lo coloca en c/windows/php.ini y descomentar la linea que dice mod_rewrite.so, es decir quitadle el ; que esta delante, una vez hecho esto, reinicia apache y deberiaís de tener mod_rewrite corriendo en tu servidor local.

Una vez activado el mod_rewrite, seguimos;
La opción Multiviews es para permitir que si un directorio solicitado no existe, se busque en su anterior ruta el archivo con el nombre del directorio indicado. Por ejemplo, si vamoa a miweb.com/admin/inicio, con esta opción se buscaría el archivo inicio (con la extensión según el orden de la configuración de apache, por ejemplo primero php, luego html...) en el directorio admin.

Después tenemos la activación del motor de rescritura, y la definición de ruta base para la rescritura como "/", o sea el directorio raíz de la web. Y le siguen las reglas de rescritura: las dos primeras son para evitar que se intente rescribir las peticiones a los directorios configs, includes,data, models, views, controllers que deben ignorarse pues ahí están los archivos de nuestra aplicación, si desean una capa de seguridad más, podeís ponerlos encima de public_html y por último tenemos una regla para cuando se reciba un parámetro y otro para cuando se reciban dos. Según la primera regla, si vamos a www.miweb.com/news se traduciría a index.php?controller=news, y según la segunda al ir a www.miweb.com/news/noticia se ejecutaría el script index.php?controller=news&action=noticia. El típico sistema de rescritura de URL. Recordad que tenéis que tener activado el ModRewrite en el apache, y que si usáis otro servidor web tendréis que usar el método que éste os proporcione.
Y por último añadimos AddCharset UTF-8 .php, para indicarle al servidor que nuestra aplicación esta codificada sobre UTF-8, que va a ser standar en PHP 6.

_Ahora continuaremos con el uso de PDO (PHP Data Objects), en nuestra aplicación MVC que veremos en la tercera parte de este tutorial.

2 comentarios: