Foros del Web » Programando para Internet » PHP »

echo VS include

Estas en el tema de echo VS include en el foro de PHP en Foros del Web. Dos dudas: Primera duda: Si tengo un trozo de código, por ejemplo un formulario que depende del tipo de usuario, tendríamos varias formas hacerlo: Una ...
  #1 (permalink)  
Antiguo 28/03/2009, 12:06
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 19 años, 9 meses
Puntos: 4
echo VS include

Dos dudas:

Primera duda: Si tengo un trozo de código, por ejemplo un formulario que depende del tipo de usuario, tendríamos varias formas hacerlo: Una es mostrándolo mediante un echo en el mismo archivo
Código:
switch($usuario)
{
	case "normal": { echo '<form>Formulario para usuario normal</form>'; break; } 
	case "privilegiado": { echo '<form>Formulario para usuario privilegiado</form>'; break; } 
}
o por el contrario cargando el código xhtml que esta en otro archivo desde un include.
Código:
switch($usuario)
{
	case "normal": { $tipo_usuario = 'normal'; break; } 
	case "privilegiado": { $tipo_usuario = 'privilegiado'; break; } 
} 
include('formularios/'.$tipo_usuario.'.php');
Actualmente estoy utilizando el segundo método porque me parece más ordenado y al tratar trozos de código como objetos (entiendase archivos .php) conceptualmente es más intuitivo para mi, pero quería preguntaros si hay alguna diferencia significa de rendimiento entre ambas, para en tal caso cambiar mi forma de estructurar la página.

Segunda duda:
En el caso de que se utilice include para llamar a trozos de código ¿hay alguna forma de evitar que esto se convierta en problema de seguridad? es decir, evitando que esos "modulos" pudieran ser llamados aisladamente a través de url, ejemplo: midominio.com/formularios/Normal.php
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."
  #2 (permalink)  
Antiguo 28/03/2009, 12:21
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: echo VS include

Primera duda:

- Si el codigo a desplegar es solo un par de lineas, puedes usar echo directamente y no afectara mucho el rendimiento.
- Si son muchas lineas, es mejor usar include.
- Si son varias lineas puedes entrar en modo HTML y ponerlo en el mismo archivo:
Código php:
Ver original
  1. <?php
  2. if($tipo_usuario == 'privilegiado') {
  3. // Iniciamos modo HTML
  4. ?>
  5.     <form>bla bla bla bla</form>
  6. <?php
  7. // Volvemos a PHP
  8. }
  9. ?>

Segunda duda:

Define una constante en tu script y en cada archivo incluido verifica:

Código php:
Ver original
  1. // En el archivo principal de tu script:
  2. define('CONSTANTE', 1);
  3.  
  4. // En cada archivo incluido:
  5. if(!defined('CONSTANTE'))
  6.     die('Acceso no permitido.');
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 28/03/2009, 12:30
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 19 años, 9 meses
Puntos: 4
Respuesta: echo VS include

Gracias por tu ayuda Triby

Presupongo que entrar y salir del modo html es más eficiente que hacer un include ¿correcto?

Y una pequeña duda sobre el asunto de las constantes:
Suponiendo que alguien conociera el nombre de la constante ¿existiría la posibilidad de que declarase su valor vía url?
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."
  #4 (permalink)  
Antiguo 28/03/2009, 13:54
Avatar de Dude--  
Fecha de Ingreso: junio-2004
Ubicación: Sevilla - España
Mensajes: 197
Antigüedad: 19 años, 9 meses
Puntos: 4
Respuesta: echo VS include

Por cierto ¿por que si meto el checkeo de la constante en un include, para no tener que editarlo en cada fichero si lo cambio, no funciona?

Código PHP:
// En el archivo principal de mi script index.php
define('CONSTANTE'1);
include (
'prueba.php'); 
Código PHP:
// En un archivo llamado checkeo.php
<?php 
 
if(!defined('CONSTANTE'))
        die(
'Acceso no permitido.');
?>
Código PHP:
//En el archivo prueba.php
<?php include('checkeo.php'); ?>
Hola esto debería salir solo si se ha cargado este archivo desde el principal y no si se llama desde una url.
__________________
"El camino empieza renunciando el control y volviéndose flexibles, como una brizna de paja en un huracán."

"Desconozco tanto... es excitante comenzar a nadar en este mar de dudas..."
  #5 (permalink)  
Antiguo 30/03/2009, 13:58
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: echo VS include

Dude--, la unica forma de crear una constante es definiendola dentro de tu script, aun cuando register_globals estuviera activada solo puede crear variables, nunca una constante, por lo que es seguro y efectivo incluir la verificacion en cada archivo incluido.

La opcion del archivo incluido tal vez seria mejor con include_once() para tratar de no sobrecargar innecesariamene el servidor... pero sigo prefiriendo verificar la constante directamente
__________________
- León, Guanajuato
- GV-Foto
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 04:49.