Foros del Web » Programando para Internet » PHP »

Optimizando PHP, me trabé :(

Estas en el tema de Optimizando PHP, me trabé :( en el foro de PHP en Foros del Web. Bueno estoy intentando optimizar mis aplicaciones PHP pero llego a una parte donde me trabo y quizá la solución sea muy tonta, pero mejor aconsejarme. ...
  #1 (permalink)  
Antiguo 31/01/2009, 14:06
 
Fecha de Ingreso: enero-2009
Mensajes: 46
Antigüedad: 15 años, 2 meses
Puntos: 1
Optimizando PHP, me trabé :(

Bueno estoy intentando optimizar mis aplicaciones PHP pero llego a una parte donde me trabo y quizá la solución sea muy tonta, pero mejor aconsejarme.

Estoy intentando separar php de html, es decir, en mi index.php muestro así:
(Está simplificado, un resumen).

Código PHP:
<?php

//Muestro el header
include_once('header.php');

//En esta parte es la navegación dinámica y llamada al archivo.
if($_GET['sec'])
include_once(
'secciones/' $_GET['sec'].'.php');

//Muestro el pie
include_once('pie.php');

?>
Ok, el problema viene cuando quiero cambiar dinámicamente el título de las páginas. Antes era sencillo ya que el header.php se encontraba abajo y las secciones arriba, entonces desde una variable simple ya cambia el titulo.

Pero ahora, al querer optimizar, intento incluir directamente html puro en los header y pie. Los archivos de cada sección también incluyen escapes html (no todo es procesado por php), por eso debe estar en medio.

Bien, mi duda es.. ¿Cómo cambio el título dinámicamente si el header se encuentra por encima de las secciones?.
  #2 (permalink)  
Antiguo 31/01/2009, 15:56
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: Optimizando PHP, me trabé :(

pues mas que super facil

index.php
Código PHP:
//Muestro el header

$titulo_pagina='mi primer pagina en php';

include_once(
'header.php');

//En esta parte es la navegación dinámica y llamada al archivo.
if($_GET['sec'])
include_once(
'secciones/' $_GET['sec'].'.php');

//Muestro el pie
include_once('pie.php'); 
en header.php
Código PHP:
//bueno aca va tu header php pero tienes q poner esto en el titulo
...
<title><?php echo $titulo_pagina?></title>
...
asi toma la variable previamente definida y la imprime aqui

ahora un consejo con ese include para las secciones

utilizar un array para definir las secciones disponibles
Código PHP:
$secciones=array('home','usuarios','catalogo','contacto');

if(
in_array($_GET['sec'],$secciones)){
require_once(
'secciones/' $_GET['sec'].'.php');
}else{
die(
'no se haga el vivo y no intente cargar secciones prohibidas');
//o puedes cargar la seccion por defecto o lo que fuere

</span></span>
saludos
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 01/02/2009, 10:28
 
Fecha de Ingreso: enero-2009
Mensajes: 46
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Optimizando PHP, me trabé :(

Hola emiliodeg, por curiosidad, ¿por qué es mejor utilizar un array para los nombres de las secciones? ¿por seguridad?.

Sobre el header aún no me queda claro, porque el título es dinámico (va cambiando) por lo tanto aquella variable no me sirve.. la cual en realidad debería estar en cada sección.

Gracias.
  #4 (permalink)  
Antiguo 02/02/2009, 03:31
 
Fecha de Ingreso: octubre-2003
Mensajes: 153
Antigüedad: 20 años, 6 meses
Puntos: 5
Respuesta: Optimizando PHP, me trabé :(

Lo del array (que me corrijan si me equivoco) es por que quede todo más organizado y mejor. Es decir, si lo pones en un array, no tendrás que estar inventandote X nombres de variables que en cualquier lugar del código pueden entrar en conflicto porque no te hayas acordado que la definiste anteriormente y resulte que lo machaques.... por nada mas

Un saludo
  #5 (permalink)  
Antiguo 02/02/2009, 03:40
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: Optimizando PHP, me trabé :(

Puedes usar ob_start() ob_get_clean() para guardar en una variable el contenido generado por un include. Y luego sarcar el contenido en el orden que quieras:
Código PHP:
<?php

if($_GET['sec']) {
ob_start();
include_once(
'secciones/' $_GET['sec'].'.php');
$contenido=ob_get_clean();
}


//Muestro el header
include_once('header.php');

//En esta parte es la navegación dinámica y llamada al archivo.
echo $contenido;

//Muestro el pie
include_once('pie.php');

?>
Como ejectuas primero el codigo de la seccion, puedes crear ahi las variables que leeran header.php y pie.php.

Y si, usar un array para las secciones es mas seguro. Imagina que tienes en /config.php la configuracion de acceso a tu base de datos. ¿Que pasa si a tu script le pasas ?sec=../config ? Que el include cargara 'secciones/../config.php'.
  #6 (permalink)  
Antiguo 02/02/2009, 06:04
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Optimizando PHP, me trabé :(

Mi recomendación es que utilices un motor de plantillas sencillo (ej: NokTemplate).
Esto te permitirá generar partes de la vista en el orden que quieras que creo es el problema que tenías en algún punto de la conversación.

Un saludo
  #7 (permalink)  
Antiguo 02/02/2009, 06:35
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Optimizando PHP, me trabé :(

Y otra posibilidad es que tomes el titulo por get:
Código php:
Ver original
  1. <?php
  2. $title = $_GET['titulo'];
  3. //Muestro el header
  4. include_once('header.php?titulo='.$title);
  5. [...]

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
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:08.