Foros del Web » Programando para Internet » PHP »

Mejorar web modular

Estas en el tema de Mejorar web modular en el foro de PHP en Foros del Web. Cita: Iniciado por pateketrueke ¡realmente vale la pena! lo mejor que puedes hacer en cuanto a seguridad es tener los scripts de ejecución fuera del ...

  #31 (permalink)  
Antiguo 22/09/2010, 15:18
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
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!

Etiquetas: modular, mejoras
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:26.