Foros del Web » Programando para Internet » PHP »

Redireccion fallida en php

Estas en el tema de Redireccion fallida en php en el foro de PHP en Foros del Web. Chicos,deseaba consultarles ya que no se que hacer. estoy creando un neuvo usuario, para eso le hago ingresar el usuario, dos campos de contraseña (como ...
  #1 (permalink)  
Antiguo 02/12/2003, 23:53
 
Fecha de Ingreso: diciembre-2002
Mensajes: 472
Antigüedad: 15 años
Puntos: 0
Pregunta Redireccion fallida en php

Chicos,deseaba consultarles ya que no se que hacer.
estoy creando un neuvo usuario, para eso le hago ingresar el usuario, dos campos de contraseña (como es usual hacerlo) y algunos datos mas.
esto lo mando a una pagina que procesa.
1) vi si el usuario existe, si existe reenvia ala pagina original y le pie qeu cambie el usuario ya que este ya existe.
")si no existe, crear el neuvo registro con todos los datos

Ahora bien , en el rpimer paso no puedo ahcerlo ya que la funcion header () pincha cunado se hace dentro de un if que verifica eso y obviamente despues de hacer una consulta a la base de datos (el header() debe estar al principio).
Como se puede hacer esto sin que me tire error PHP?
en asp con redirect me andaba bien.Incluso habia algunas clausulas y sentencias para el tema de las cabeceras.
Alguien sabe algun truco sobre esto o no se puede hacer en PHP?
Un saludo
Tico
  #2 (permalink)  
Antiguo 03/12/2003, 00:19
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
tico74:
El header() no debe estar necesariamente al comienzo del script... Sino que debe estar antes de que haya alguna salida al navegador (por ejemplo, código HTML, JavaScript).

Lo que debes hacer es buscar una manera de estructurar bien tu código.

Las "páginas" (scripts) de proceso no necesitan escribir código.

Podría ser algo así:
Código PHP:
//Supongamos que éste es el script al que has enviado las variables del formulario

if (usuario existe){
   
header("location: formulario.php?error=1");//Redireccionas al formulario y le envías una variable que indique el error.
}else{
   
Acá realizas el proceso de crear el nuevo registro en la BD.
   
Y luego redirecciona a la página que quieras:

   
header("location: index.php");

Bueno.. eso en plan básico medio código... medio algoritmo.. pero si tienes esa estructura, todo debe funcionar bien.

Saludos

PD:(No recomendado)También hay funciones como ob_start() (revisa en las FAQ's y en el manual) que hacen lo que dices con las cabeceras para poder poner tus header() donde quieras... pero, además de no ser una programación limpia, consumen demasiados recursos del servidor.
  #3 (permalink)  
Antiguo 03/12/2003, 02:23
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

En ASP el response.redirect suele funcionar porque por defecto activan el buffer de salida. Y en PHP ese buffer esta desactivado por defecto. Lo puedes activar con el ob_start(), pero no es recomendado porque carga con mas trabajo al PHP (tambien al ASP).

Planteatelo de esta forma. Si con la redireccion no se va a mostrar nada, ¿para que generar esa salida? Para mi es una perdida de tiempo. Llevas la condicion antes de generar salida y todo solucionado.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 20:25.