Foros del Web » Programando para Internet » PHP »

Headers para variar

Estas en el tema de Headers para variar en el foro de PHP en Foros del Web. Imagino que este tema esta repetido ya pero he leido bastante y no logro encontrar el error, de echo este codigo me funciona sin ningun ...
  #1 (permalink)  
Antiguo 18/06/2008, 20:02
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Headers para variar

Imagino que este tema esta repetido ya pero he leido bastante y no logro encontrar el error, de echo este codigo me funciona sin ningun problema con wampserver solo cuando lo subo al hosting me da el error:

Warning: Cannot modify header information - headers already sent by (output started at /home/verde/public_html/SCL/conexion.php:18) in /home/verde/public_html/SCL/agregacar.php on line 42

Código:
<?php  
session_start(); 
include("conexion.php");
$flag=0;
$id_esta=$_POST["id_esta"];
$id_curso=$_POST["id_curso"];
if (($id_esta<>NULL) && ($id_curso<>NULL))
{
	$flag=1;
	$link=conectar();
	$consulta = "SELECT * FROM lista WHERE id_esta = '$id_esta' AND id_curso ='$id_curso'"; 
	$resultado = mysql_query($consulta,$link);
	$datos = mysql_fetch_array($resultado);
	$id_lista=$datos["ID_LISTA"]; 
}
if ($id_lista<>NULL)
{
	$consulta = "SELECT * FROM art_lista WHERE id_lista ='$id_lista'"; 
	$resultado = mysql_query($consulta,$link);
	while ($datos = mysql_fetch_array($resultado)) {
		$id_art[]=$datos["ID_ART"]; 
		$can[]=$datos["CAN"];
		}	
	$cant=count($id_art);
	for ($i=0;$i<$cant;$i++)
	{
		$consulta = "SELECT * FROM articulo WHERE id_art = '$id_art[$i]'"; 
		$resultado = mysql_query($consulta,$link);
		$datos = mysql_fetch_array($resultado);	
		$id=$datos["ID_ART"];
		$cantidad=$can[$i];
		
		if(isset($_SESSION['carro'])) 
		$carro=$_SESSION['carro']; 
 
		$carro[md5($id)]=array('identificador'=>md5($id), 
		'cantidad'=>$cantidad,'producto'=>$datos['NOM_ART'], 
		'precio'=>$datos['PRECIO_ART'],'codigo'=>$datos['CODIGO'],
		'unidad'=>$datos['ID_UNI'],'id'=>$id); 	  	
	}
	$_SESSION['carro']=$carro;
	header("Location:carro.php?id_art=$id".SID);
}

if ($flag==0)
{
	extract($_REQUEST); 	
	if(!isset($cantidad)){$cantidad=1;} 
	
	$link=conectar();
	$consulta = "SELECT * FROM articulo WHERE id_art = '$id'"; 
	$resultado = mysql_query($consulta,$link);
	$datos = mysql_fetch_array($resultado);


	if(isset($_SESSION['carro'])) 
	$carro=$_SESSION['carro']; 
 
	$carro[md5($id)]=array('identificador'=>md5($id), 
	'cantidad'=>$cantidad,'producto'=>$datos['NOM_ART'], 
	'precio'=>$datos['PRECIO_ART'],'codigo'=>$datos['CODIGO'],
	'unidad'=>$datos['ID_UNI'],'id'=>$id); 

	$_SESSION['carro']=$carro; 
	header("Location:right.php?id_tipo_art=$id_art".SID);  
}
?>
  #2 (permalink)  
Antiguo 18/06/2008, 20:27
 
Fecha de Ingreso: abril-2008
Ubicación: Montevideo - Uruguay
Mensajes: 156
Antigüedad: 16 años
Puntos: 5
Respuesta: Headers para variar

Hi !

El error de "Header Location" suele darse porque el navegador esta escapando HTML ... Los headers tienen que enviarse antes de escapar HTML...

No puedes tener:
Código HTML:
<html>
<head>
<body>
 aasdasdasd
</body>
</head>
</html>
[PHP]
<?php
header("location:../index.php");
?>
[/PHP]
Eso puede dar error ya que se esta escapando HTML antes de hacer la redirección... Intenta redireccionar con Javascript o poniendo el codigo antes que el HTML (El php).

P.D: Con Javascript debes usar: document.location.href="ruta";

Espero te sea util
-ByE-
  #3 (permalink)  
Antiguo 18/06/2008, 22:06
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Headers para variar

gracias por tu respuesta pero eso fue lo primero que revise y no tengo html a menos que sea laugn frame o algo extraño, aun no doy con la respuesta.

Ese comando javascript puede hacer lo mismo digamos que un header para direccionar el navegador onda aumaticamente ?
  #4 (permalink)  
Antiguo 18/06/2008, 22:52
Avatar de Tombar  
Fecha de Ingreso: junio-2008
Ubicación: /home/tombar
Mensajes: 198
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: Headers para variar

a ver tienes el siguiente error:

Warning: Cannot modify header information - headers already sent by (output started at /home/verde/public_html/SCL/conexion.php:18)

Eso nos indica que en el archivo /home/verde/public_html/SCL/conexion.php linea 18 tienes algo que escribe "a pantalla" y te caga el envio de los headers, [los : separan el nombre dle archivo de la linea en que esta el error]

Probablemente tengas, algo de debug del estilo un var_dump() o un echo o simplemente dejastes una nueva linea luego de cerrar tu codigo php.

:wq!
  #5 (permalink)  
Antiguo 18/06/2008, 23:53
 
Fecha de Ingreso: abril-2004
Mensajes: 154
Antigüedad: 20 años
Puntos: 0
Respuesta: Headers para variar

Highlander, revisa el archivo que estas importando en include("conexion.php");
Mira que no estes imprimiendo nada. Si no hay impresion de algo en este archivo, borra la última linea donde tienes ?>
__________________
Desdichado quien duerme en la mañana
  #6 (permalink)  
Antiguo 19/06/2008, 10:23
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Headers para variar

Excelente, el problema era una linea al final del ?> en el archivo conexion.php, el que usaba en el hosting era otro al local.

Gracias a todos.
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 08:53.