Ver Mensaje Individual
  #31 (permalink)  
Antiguo 22/09/2010, 15:18
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Mejorar web modular

Cita:
Iniciado por pateketrueke Ver Mensaje
¡realmente vale la pena!

lo mejor que puedes hacer en cuanto a seguridad es tener los scripts de ejecución fuera del alcance del usuario, así que me parece una técnica muy acertada...
Muchas gracias pateketrueke,

Se te ocurre alguna cosa más para aplicar al modelo de web modular?

conf.php
Código PHP:
Ver original
  1. <?php
  2. /*
  3.  * Archivo de configuración para nuestra aplicación modularizada.
  4.  * Definimos valores por defecto y datos para cada uno de nuestros módulos.
  5. */
  6. define('MODULO_DEFECTO', 'home');
  7. define('MODULO_404', '404');
  8. define('LAYOUT_DEFECTO', 'layout_simple.php');
  9. define('LAYOUT_FUTBOL', 'layout_futbol.php');
  10. define('LAYOUT_404', 'layout_404.php');
  11. define('MODULO_PATH', realpath('../../privado_webmodular/modulos/'));
  12. define('LAYOUT_PATH', realpath('../../privado_webmodular/layouts/'));
  13. define('LIB_PATH', realpath('../../privado_webmodular/libs/'));
  14.  
  15. $conf['home'] = array(
  16.         'archivo' => 'home.php',
  17.         'layout' => LAYOUT_DEFECTO );
  18. $conf['faq'] = array(
  19.         'archivo' => 'ayuda/faq.php',
  20.         'layout' => LAYOUT_DEFECTO );
  21. $conf['soporte'] = array(
  22.         'archivo' => 'ayuda/soporte.php',
  23.         'layout' => LAYOUT_DEFECTO );
  24. $conf['directorio/futbol'] = array(
  25.         'archivo' => 'directorio/futbol.php',
  26.         'layout' => LAYOUT_FUTBOL );
  27. $conf['articulo'] = array(
  28.         'archivo' => 'articulos.php',
  29.         'layout' => LAYOUT_DEFECTO );
  30. /*$conf['imp_art'] = array(
  31.         'archivo' => $conf['articulo']['archivo'],
  32.         'layout' => 'imprimir.php' );
  33. */
  34. ?>

index.php
Código PHP:
Ver original
  1. <?php
  2. //error_reporting(E_ALL);
  3. // Primero incluimos el archivo de configuración
  4. include('conf.php');
  5.  
  6. /** Verificamos que se haya escogido un modulo, sino
  7. * tomamos el valor por defecto de la configuración.
  8. */
  9. if (!empty($_GET['pagina']))
  10.     $modulo = $_GET['pagina'];
  11. else{
  12.     $modulo = MODULO_DEFECTO;
  13. }
  14. /* Saneamos la variable de entrada */
  15. $module=htmlentities($modulo);
  16. $module=strip_tags($module);
  17. $modulo=(string)$module;
  18.  
  19. /** También debemos verificar que el valor que nos
  20. * pasaron, corresponde a un modulo que existe, caso
  21. * contrario, cargamos el modulo por defecto,
  22. pero en mi caso redirigo a una página de error 404.
  23. */
  24. if (empty($conf[$modulo])){
  25.     //$modulo = MODULO_DEFECTO;
  26.     header("HTTP/1.0 404 Not Found");
  27.     header("Status: 404 Not Found");
  28.     echo "Pagina que buscas no existe";
  29.     exit;
  30. }
  31. //print_r($conf[$modulo]);
  32. /* Si existe la variable articulo y la urlamigable*/
  33. if ($_GET['pagina']=='articulo'  &&  !empty($_GET['urlamigable'])){
  34.     $tit_amigable_articulo=$_GET['urlamigable'];
  35.     /* Saneamos la variable de entrada */
  36.     $tit_amigable=htmlentities($tit_amigable_articulo);
  37.     $tit_amigable=strip_tags($tit_amigable);
  38.     $tit_amigable_articulo=(string)$tit_amigable;
  39. }
  40.  
  41. /** Ahora determinamos que archivo de Layout tendrá
  42. * este módulo, si no tiene ninguno asignado, utilizamos
  43. * el que viene por defecto
  44. */
  45. if (empty($conf[$modulo]['layout'])){
  46.         $conf[$modulo]['layout'] = LAYOUT_DEFECTO;
  47. }      
  48. /** Aqui podemos colocar todos los comandos necesarios para
  49. * realizar las tareas que se deben repetir en cada recarga
  50. * del index.php - En el ejemplo, conexión a la base de datos.
  51. *
  52. * include('clases/class.DB.php');
  53. * $db = new DB();
  54. * $db->conectar();
  55. */
  56. include(LIB_PATH.'/Conectar_BD.php');
  57.  
  58. /** Finalmente, cargamos el archivo de Layout que a su vez, se
  59. * encargará de incluir al módulo propiamente dicho. si el archivo
  60. * no existiera, cargamos directamente el módulo. También es un
  61. * buen lugar para incluir Headers y Footers comunes.
  62. */
  63. $path_layout = LAYOUT_PATH.'/'.$conf[$modulo]['layout'];
  64. $path_modulo = MODULO_PATH.'/'.$conf[$modulo]['archivo'];
  65.  
  66. if (file_exists($path_layout))
  67.     include( $path_layout );
  68. else
  69.     if (file_exists( $path_modulo ))
  70.         include( $path_modulo );
  71.     else
  72.         die('Error al cargar el módulo <b>'.$modulo.'</b>. No existe el archivo <b>'.$conf[$modulo]['archivo'].'</b>');
  73. ?>

Muchas gracias de antemano!