Foros del Web » Programando para Internet » PHP »

Error en codigo PHP.

Estas en el tema de Error en codigo PHP. en el foro de PHP en Foros del Web. Que tal! Tengo un tiempo con este problema y por más que he googleado buscandole solución no encuentro nada, asi que decidí molestarlos con mi ...
  #1 (permalink)  
Antiguo 10/03/2009, 14:17
 
Fecha de Ingreso: septiembre-2008
Ubicación: Chihuahua, México
Mensajes: 88
Antigüedad: 15 años, 7 meses
Puntos: 2
Error en codigo PHP.

Que tal! Tengo un tiempo con este problema y por más que he googleado buscandole solución no encuentro nada, asi que decidí molestarlos con mi pregunta.

Tengo una página index.php la cual me muestra las demás páginas de mi sitio dentro de la misma por medio de un código (que pongo más adelante). Si mando llamar páginas que contengan otro código php dentro de ellas este nunca se ejecuta.

Por ejemplo, la página index.php despliega dentro a seccion1.php y seccion1.php debe desplegar dentro a menu.htm con la funcion include. Si pruebo solo la pagina seccion1.php si puedo ver el contenido html y el menu.htm, pero cuando la despliego dentro de index.php no veo a menu.htm, solo el contenido html.

Aqui pongo el código de index.php y seccion1.php:

index.php
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<h1>Página principal</h1>
<p><a href="index.php?seccion=secciones/seccion1.php">Seccion1</a> | Seccion2 | Seccion3</p>

<?php if($_GET['seccion']){
    readfile("$_GET[seccion]")or die("Pagina en construccion");
}else{
      readfile("home.htm");}
?>

</body>
</html>
seccion1.php
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<h2>Esta es la Seccion 1</h2>
<?php include("menu.htm");?>
</body>
</html>
Soy novato en php, se muy poco pero espero con su ayuda aprender un poco más! Gracias de antemano!
  #2 (permalink)  
Antiguo 10/03/2009, 14:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Error en codigo PHP. Ayuda!

En lugar de usar readfile() usa include() como en tu segundo ejemplo.

Saludos
  #3 (permalink)  
Antiguo 10/03/2009, 14:29
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Error en codigo PHP. Ayuda!

Para empezar, en la página principal debes usar include en lugar de readfile.

Segundo, la forma como estás cargando las secciones es muy insegura, ya que podría accederse a cualquier archivo del sistema.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 10/03/2009, 15:09
 
Fecha de Ingreso: septiembre-2008
Ubicación: Chihuahua, México
Mensajes: 88
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Error en codigo PHP. Ayuda!

Muchas Gracias por responder tan rápido! hice lo que me dijeron sobre el include:

Código:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<h1>Página principal</h1>
<p><a href="index.php?seccion=secciones/seccion1.php">Seccion1</a> | Seccion2 | Seccion3</p>

<?php if($_GET['seccion']){
    include ("$_GET[seccion]")or die("Pagina en construccion");
}else{
      include ("home.htm");}
?>

</body>
</html>
Ya lo había intentado antes pero no me funciono, asi que se me ocurrió quitarle la parte que dice
Código:
or die("Pagina en construccion")
y funcionó! solo que como hago ahora para que me despliegue el mensaje de página en construcción?

Sobre lo de la seguridad ya había leido aquí: http://www.zonaphp.com/creando-webs-modulares/ que es peligroso. En ese mismo artículo viene una forma mejor de hacerlo pero para mi nivel me parece muy complicado , Hay alguna manera más facil? Puedo hacer alguna correción a la forma en que lo tengo ahora para ocultar las variables que se muestran al colocar el mouse sobre los links y en la barra de direcciones cada vez que abro una página? que me sugieren para evitar esa vulnerabilidad?
  #5 (permalink)  
Antiguo 10/03/2009, 15:11
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Error en codigo PHP. Ayuda!

En lugar de recibir el nombre del archivo en la URL como parámetro. Mejor recibe un nombre o un id, luego, con un switch incluyes el archivo que deseas. Así, sólo podrán incluirse los archivos que estén en el switch.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 10/03/2009, 16:25
 
Fecha de Ingreso: septiembre-2008
Ubicación: Chihuahua, México
Mensajes: 88
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Error en codigo PHP. Ayuda!

Cita:
Iniciado por David el Grande Ver Mensaje
En lugar de recibir el nombre del archivo en la URL como parámetro. Mejor recibe un nombre o un id, luego, con un switch incluyes el archivo que deseas. Así, sólo podrán incluirse los archivos que estén en el switch.
Gracias por tu respuesta David, aunque como te digo, soy nuevo en esto de php, y no te entiendo muy bien, podrias darme un ejemplo para analizarlo y aplicarlo a mi caso?
  #7 (permalink)  
Antiguo 10/03/2009, 16:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Error en codigo PHP.

Por ejemplo:
Código php:
Ver original
  1. switch ($_GET['seccion']) {
  2.     case 'portada':
  3.     case 'otro':
  4.     case 'mas':
  5.         include $_GET['seccion'] . '.php';
  6.         break;
  7.     default:
  8.         include 'home.php';
  9. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 10/03/2009, 17:28
 
Fecha de Ingreso: septiembre-2008
Ubicación: Chihuahua, México
Mensajes: 88
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Error en codigo PHP.

Ok trataré de aplicarlo y te platico como me fue, gracias!
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 11:12.