Foros del Web » Programando para Internet » PHP »

¿Cual es la forma correcta de utilizar Header("Location:....")

Estas en el tema de ¿Cual es la forma correcta de utilizar Header("Location:....") en el foro de PHP en Foros del Web. hola amigos, verás yo siempre he tendio problemas al utilizar esta funcion,. Por ejemplo hoy que intento volver a usarla me tira mensajes como estos: ...
  #1 (permalink)  
Antiguo 14/12/2010, 11:14
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
¿Cual es la forma correcta de utilizar Header("Location:....")

hola amigos, verás yo siempre he tendio problemas al utilizar esta funcion,.


Por ejemplo hoy que intento volver a usarla me tira mensajes como estos:

Warning: Cannot modify header information - headers already sent by (output started at /home/iovanal/public_html/proyecto/includes/header-main.php:11) in /home/iovanal/public_html/proyecto/login.php on line 36

alguien podría orientarme diciendome las posibles causas., no pego codigos porque se trata de bastante código.

muchas gracias.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #2 (permalink)  
Antiguo 14/12/2010, 11:22
Avatar de efedefernan  
Fecha de Ingreso: diciembre-2007
Ubicación: Cantabria
Mensajes: 91
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: ¿Cual es la forma correcta de utilizar Header("Location:....")

La posibles causas pueden ser varias, lo mejor es que nos muestres tu codigo.
Posiblemente estés dando alguna salida de codigo o tengas lineas por encima del header.
  #3 (permalink)  
Antiguo 14/12/2010, 11:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ¿Cual es la forma correcta de utilizar Header("Location:....")

En las FAQs del foro puedes ver específicamente la razón y como arreglarlo:

http://www.forosdelweb.com/wiki/PHP:...lready_sent%3F

http://www.forosdelweb.com/wiki/PHP:...n_line_4%22%3F

Saludos.
  #4 (permalink)  
Antiguo 14/12/2010, 11:38
Usuario no validado
 
Fecha de Ingreso: diciembre-2010
Mensajes: 42
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: ¿Cual es la forma correcta de utilizar Header("Location:....")

Buen día,

Este tipo de errores se dan debido a que usted ha enviado ha imprimir algo a su usuario antes de reedireccionarlo, como dice que la salida (de contenido) de inicio en la linea 11.


Lo que debes de hacer es no enviar contenido al usuario antes de reedireccionarlo.

Saludos.
  #5 (permalink)  
Antiguo 14/12/2010, 17:11
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: ¿Cual es la forma correcta de utilizar Header("Location:....")

Muchas gracias a todos.

Realmente siempre he tenido este problema.

GatorV sabes que siempre me has parecido que eres un Genio. Felicidades amigo tus respuestas siempre dan en el blanco.


Verán aún no alcanzo a comprender el porque del error así que pego las lineas necesarias de los archivos. Las lineas que aquí pone el highlight corresponden a las lineas del archivo original.

El mensaje de error es:
Warning: Cannot modify header information - headers already sent by (output started at /home/iovanal/public_html/proyecto/includes/header-main.php:11) in /home/iovanal/public_html/proyecto/login.php on line 39

header-main.php
Código PHP:
Ver original
  1. <?php
  2. require_once('includes/config.php');
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  8. <title>Documento sin título</title>
  9. <link type="text/css" href="style/jquery-ui-1.7.2.custom.css" rel="stylesheet" />
  10. <link type="text/css" href="style/style.css" rel="stylesheet" />
  11.         <script type="text/javascript" src="includes/scripts.js"></script>
  12.         <script type="text/javascript" src="js/jquery/jquery-1.3.2.min.js"></script>
  13.         <script type="text/javascript" src="js/jquery/jquery-ui-1.7.2.custom.min.js"></script>



login.php
Código PHP:
Ver original
  1. <?php require_once('includes/header-main.php');?>
  2. <?php if($_SESSION['started']==1){ ?>
  3.  
  4. hay una session iniciada
  5.  
  6. <?php } else { //is isset $_SESSION[id]
  7. if(isset($_POST['cid'])){
  8.    
  9.    if($_POST['cid']=="3542675345679245"){
  10.       $default="Correo electrónico";
  11.       $email = $_POST['email'];
  12.       $password = $_POST['password'];
  13.      
  14.       //Validando cualquier error y generando distintos modulos.
  15.       if(empty($email) || empty($password) || $email==$default){ $error="Indica tu dirección de Email y contraseña"; } else {
  16.        
  17.         $sql="SELECT * FROM `users` WHERE `email` LIKE '".$email."'";
  18.         $result=mysql_query($sql);
  19.        
  20.         if(mysql_num_rows($result)==0){
  21.            $error = "Aún no se a registrado una cuenta con esa dirección de correo electrónico. <a href='register.php' style='color:#069;text-decoration:none;'>Registrate</a>";
  22.         }
  23.        
  24.           else {
  25.              $sql="SELECT * FROM `users` WHERE `email` LIKE '".$email."' AND `password` LIKE '".$password."'";
  26.              $result=mysql_query($sql);
  27.              $array = mysql_fetch_array($result);
  28.              
  29.              if(mysql_num_rows($result)==0) { $error = "La contraseña es incorrecta"; }
  30.                else{
  31.                  //Realizo Sesion
  32.                  
  33.                  $_SESSION['started'] = 1;
  34.                  $_SESSION['idUserLogged'] = $array['id'];
  35.                  $_SESSION['emailUserLogged'] = $array['email'];
  36.                  $_SESSION['passUserLogged'] = $array['password'];
  37.                  $_SESSION['dateUserLogged'] = $array['date'];
  38.                  
  39.                                  header("Location: index.php");
  40.  
  41.                }//else line 26
  42.           }//else line 20
  43.       }//else line 14
  44.   }//if line 9
  45. }//if line7
  46. ?>

Agradezco su ayuda.
Un saludo.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #6 (permalink)  
Antiguo 14/12/2010, 17:57
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
De acuerdo Respuesta: ¿Cual es la forma correcta de utilizar Header("Location:....")

header("Location:todalaruta/fichero.php");
yo lo uso asi,poniendo toda la ruta de mi otro fichero php..y funciona correctamente.
Salu2
  #7 (permalink)  
Antiguo 14/12/2010, 23:54
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: ¿Cual es la forma correcta de utilizar Header("Location:....")

Todavía no me ayudan amigos, jeje

Muchas gracias.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #8 (permalink)  
Antiguo 15/12/2010, 01:35
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: ¿Cual es la forma correcta de utilizar Header("Location:....")

Amigo, ya te dijeron por que, solo pon mas atención, antes de utilizar header() (NO solo para hacer redireccionamiento si no para enviar cualquier tipo de cabecera) no puedes hacer ningún ECHO, PRINT, PRINTF, VAR_DUMP, ETC; así TAMPOCO puedes dejar código HTML fuera de los tag <?php ni ?>...

Para que lo entiendas, en tu archivo header-main.php tienes que quitar TODO el código HTML...

En el código de login.php tienes que cambiar el siguiente código...
Código PHP:
Ver original
  1. <?php require_once('includes/header-main.php');?>
  2. <?php if($_SESSION['started']==1){ ?>
  3.  
  4. hay una session iniciada
  5.  
  6. <?php

Por este otro...
Código PHP:
Ver original
  1. <?php
  2. require_once('includes/header-main.php');
  3. if($_SESSION['started']==1){

Ahora, a saber que es lo que contiene includes/config.php, pero si tiene alguna salida igualmente tienes que quitarla...

Si te pones a ver con detenimiento veras que eh quitado TODO lo que se imprime (o muestra en el navegador) ya que NO DEBE de haber ningún tipo de salida antes que cualquier header...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 15/12/2010, 11:01
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: ¿Cual es la forma correcta de utilizar Header("Location:....")

Ahora entiendo.

Muchas gracias, No había comprendido a que se refería.

Muchas gracias amigo.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: utilidades, formulario
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 10:44.