Foros del Web » Programando para Internet » PHP »

Problemas creando una simple web modular

Estas en el tema de Problemas creando una simple web modular en el foro de PHP en Foros del Web. Me encontre con un interesante articulo... Planificacion de un proyecto modular ...y estoy intentando ponerlo en practica. Basicamente, propone el siguiente codigo para hacer una ...
  #1 (permalink)  
Antiguo 22/07/2006, 16:12
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 20 años, 1 mes
Puntos: 20
Problemas creando una simple web modular

Me encontre con un interesante articulo...

Planificacion de un proyecto modular

...y estoy intentando ponerlo en practica. Basicamente, propone el siguiente codigo para hacer una web modular...

Código PHP:
<?
//index.php
session_start ();
error_reporting E_ALL );
include_once( 
$_SERVER 'DOCUMENT_ROOT' ]. '/includes/conexion.php' );
include_once( 
$_SERVER 'DOCUMENT_ROOT' ]. '/includes/funciones.php' );

/*aqui incluimos todas las funciones, conexiones, etc. Ponemos el error_reporting a E_ALL para que podamos ver todos los fallos */

/*… todo nuestro html …*/

if ( file_exists $_SERVER 'DOCUMENT_ROOT' ]. '/modulos/' $_GET 'modulo' ]. '.php' )) include_once( $_SERVER 'DOCUMENT_ROOT' ]. '/modulos/' $_GET 'modulo' ]. '.php' );
else echo 
"<p class='error'>El archivo al que intentas acceder no existe. Verifica la dirección.</p><p><a href='/'>Principal</a></p>" ;

/*… html restante*/
?>
...pero estoy teniendo unos problemitas. Por ejemplo, si no hay un modulo definido, como cuando abrimos el index.php por primera vez, me sale un cartel de error...

Notice: Undefined index: modulo in XXXXXX on line 17

...como puedo decirle que si no hay ningun modulo definido (lo cual es diferente a si el modulo elegido no existe) me habra el modulo "inicio", por ejemplo? Alguna idea?
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #2 (permalink)  
Antiguo 22/07/2006, 16:56
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Hola, no te daré una solucion para tu código... pero si un link que a mi me ha ayudado mucho. Esta muy bien explicado el tema y estoy seguro que te servira para resolver tu problema ;)

http://www.zonaphp.com/creando-webs-modulares/

Exitos!
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #3 (permalink)  
Antiguo 22/07/2006, 16:58
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Ese link es lo de mejor :)
__________________
Hospedaje Web al mejor costo!
  #4 (permalink)  
Antiguo 22/07/2006, 18:27
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 20 años, 1 mes
Puntos: 20
Gracias, pero hace un tiempo intente reproducir los ejemplos de ese articulo y tuve unos problemas. Creo que era que tampoco tenia una pagina de bienvenida por defecto. Pero acabo de encontrar este simple codigo que me esta sirviendo para lo que necesito...

Código PHP:
<?php
    
if(!$id) {
        include(
"modulos/inicio.php");
        }
    elseif(
file_exists("modulos/$id.php")) {
        include(
"modulos/$id.php");
        }
    else {
        include(
"modulos/error.php");
        }
?>
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #5 (permalink)  
Antiguo 22/07/2006, 23:07
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
Pues en lugar de utilizar if-else deberias utilizar la funcion switch()...

Código PHP:
<?php
switch($_GET['mod']) (
  case 
'modulo 1': include("modulos/modulo1.php"); break;
  case 
'modulo 2': include("modulos/modulo2.php"); break;
  case 
'modulo 3': include("modulos/modulo3.php"); break;
  default: include(
"modulos/home.php"); break
}
?>
Bastante facil y mucho más seguro y rapido que if-else...

Personalmente no te recomiendo utilizar eso de modulos/$id.php puesto que no es seguro, más vale definir a MANO cada modulo, como lo moestre arriba...
__________________
I Love Programming...
  #6 (permalink)  
Antiguo 22/07/2006, 23:35
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 20 años, 1 mes
Puntos: 20
Gracias Fulano, lo voy a tener en cuenta. Pero como puedo hacer para que si el modulo no existe me abra una pagina de error? Porque por lo poco que entiendo del switch que posteaste, si un modulo no existe me abre directamente el modulo por default, lo cual puede ser confuso para el visitante.
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #7 (permalink)  
Antiguo 23/07/2006, 08:52
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
y bueno, defini el default como pagina de error... el tema es que yo lo uso como home, así si hay un error simplemente vuelve al home...
__________________
I Love Programming...
  #8 (permalink)  
Antiguo 23/07/2006, 10:20
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 20 años, 1 mes
Puntos: 20
Claro, pero eso no me convence, porque puede confundir al visitante. Prefiero decirle que lo que buscaba no se encontro y decirle porque puede haber sido y como solucionarlo. No tenes idea de como hacer eso con Switch?
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #9 (permalink)  
Antiguo 23/07/2006, 11:25
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
... en donde dice default hace el include de la pagina de error!
Despues solo tenes que agregar otra sentencia case para el home

Código PHP:
<?php 
switch($_GET['mod']) ( 
  case 
'home': include("modulos/home.php"); break;
  case 
'modulo 1': include("modulos/modulo1.php"); break; 
  case 
'modulo 2': include("modulos/modulo2.php"); break; 
  case 
'modulo 3': include("modulos/modulo3.php"); break; 
  default: include(
"modulos/error404.php"); break;

?>
__________________
I Love Programming...
  #10 (permalink)  
Antiguo 23/07/2006, 13:56
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 20 años, 1 mes
Puntos: 20
Una pregunta, que pasa si accedo a la web sin ningun modulo especificado? ME refiero a si entro por ejemplo a www.midominio.com y carga automaticamente el index.php, sin ningun modulo por defecto? No me mostraria la pagina de error?
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #11 (permalink)  
Antiguo 23/07/2006, 14:18
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Si tomas directamente $_GET['mod'] tal como está ahí, sí te mostrará la página de error.

Por eso deberás hacer antes algo como lo siguiente:
Código PHP:
if (!empty($_GET['mod'])){
   
$modulo $_GET['mod'];
}else{
   
$modulo 'home';
}

//...
//...

switch($modulo){
   
//el mismo switch que te pusieron antes

Saludos
  #12 (permalink)  
Antiguo 23/07/2006, 15:05
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 20 años, 1 mes
Puntos: 20
Gracias jpinedo con eso funciona perfecto. Pero... yo me pregunto, porque es mejor hacerlo con un switch, en el que tengo que definir cada modulo manualmente, cuando con el "if" que postie yo puedo agregar modulos a lo tonto sin tocar una sola linea de codigo?, ademas que es mucho menos codigo.
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #13 (permalink)  
Antiguo 23/07/2006, 15:55
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Perdón. No había visto el if que pusiste tú. Yo te respondía a lo que ibas preguntando al final.

Para el caso, sí es mejor hacerlo como planteaste tú. Eso sí... trata de controlar en la medida de lo posible lo que te manden en la variable $id.

Saludos
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 16:02.