Foros del Web » Programando para Internet » PHP »

problemas de cookies y cabeceras

Estas en el tema de problemas de cookies y cabeceras en el foro de PHP en Foros del Web. Hola he desarrollado una aplicación web con registro de usuarios en una base de datos, la he terminado trabajando localmente y cual ha sido mi ...
  #1 (permalink)  
Antiguo 07/12/2006, 09:54
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 2 meses
Puntos: 0
problemas de cookies y cabeceras

Hola he desarrollado una aplicación web con registro de usuarios en una base de datos, la he terminado trabajando localmente y cual ha sido mi sorpresa que al subirlo a un hosting que soporta PHP y mysql tengo varios fallos que me esta costando quitar. Uno de los warnings es este, he utilizado el buscador pero no he encontrado el fallo en mi script

Warning: Cannot modify header information - headers already sent by (output started at /web/sites/user/6/72/54406/public/www/admin/ingresar_admin.php:9) in /web/sites/user/6/72/54406/public/www/admin/ingresar_admin.php on line 71

Este fallo me lo da por las cookies
setcookie("usNick",$nickN,time()+7776000);
setcookie("usPass",$passN,time()+7776000);

y luego me fallan los 3 header que tengo para redireccionar y tampoco se porque...os pego el script

<?php
include("../conectarse_bd.php");
$link=Conectarse();


function quitar($mensaje)
{
$mensaje = str_replace("<","&lt;",$mensaje);
$mensaje = str_replace(">","&gt;",$mensaje);
$mensaje = str_replace("\'","'",$mensaje);
$mensaje = str_replace('\"',"&quot;",$mensaje);
$mensaje = str_replace("\\\\","&#92",$mensaje);
return $mensaje;
}

if(trim($HTTP_POST_VARS["login"]) != "" && trim($HTTP_POST_VARS["pass"]) != "")
{
/*Asi que continuamos suponiendo que todo este bien, ahora lo que hacemos es quitarle el html,
apostrofe comillas y demas al nick y password enviados por el usuario para su comprobacion
con la base de datos, para ello utilizamos la funcion quitar($mensaje) que explicamos antes,
y guardamos las nuevas cadenas en dos nuevas variables:*/

$nickN = quitar($HTTP_POST_VARS["login"]);
$passN = quitar($HTTP_POST_VARS["pass"]);
/*Ahora ejecutamos una instruccion sql, en la cual le pedimos a la base de da
tos que de la tabla usuarios nos devuelva la fila cuyo nick corresponda por
el enviado por el usuario: */


$result = mysql_query("SELECT pass FROM Admin WHERE login='$nickN'");
if($row = mysql_fetch_array($result))
{
/*Ahora continuamos con el proceso suponiendo que el usuario exista en la base de datos ahora
debemos comprobar que el password sea correcto, para ello hacemos una simple comparacion, si
es correcto continuamos de lo contrario mostramos el mensaje de password incorrecto: */

if($row["pass"] == $passN)
{
//90 dias dura la cookie
/*Ahora suponiendo que el password es correcto continuamos y lo proximo a hacer es establecer las
cookies de nick y password (Las cuales nombramos "usNick"/"usPass" y contienen el nick y password
respectivamente) en la maquina del usuario, informamos que se ha realizado correctamente el login
y lo enviamos a la pagina principal
*/
setcookie("usNick",$nickN,time()+7776000);
setcookie("usPass",$passN,time()+7776000);




//la pabtalla principal cuando ya te has logeado correctamente
?>
<SCRIPT LANGUAGE="javascript">
location.href = "panel_admin.php";
</SCRIPT>

<?

}
else
{
//falla
header("Location: error.php");
exit;

}
}
else
{
//falla
header("Location: error.php");
}
mysql_free_result($result);
exit;

}
else
{
//falla
header("Location: error.php");
exit;

}
mysql_close();
?>
  #2 (permalink)  
Antiguo 07/12/2006, 10:32
 
Fecha de Ingreso: diciembre-2004
Mensajes: 163
Antigüedad: 19 años, 4 meses
Puntos: 2
Re: problemas de cookies y cabeceras

fijate que no estes imprimiendo ningun tipo de codigo antes de enviar la cookie o el header. puede ser que tu host ponga publicidaden el comienzo de tu página
  #3 (permalink)  
Antiguo 07/12/2006, 10:50
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: problemas de cookies y cabeceras

no es un host bueno de pago no lleva nada de publi, he leido de todo sobre este fallo y no saco nada por pantalla ni nada, he cambiado y solo tengo metido el javascript dentro del body y me sigue dando problemas, por eso he puesto el codigo para ver si alguien lo ve y me ayuda, Gracias de antemano
  #4 (permalink)  
Antiguo 07/12/2006, 11:11
 
Fecha de Ingreso: octubre-2006
Ubicación: Quart de Poblet, Valencia
Mensajes: 767
Antigüedad: 17 años, 6 meses
Puntos: 8
Re: problemas de cookies y cabeceras

Mi primer mensaje en este foro fue justamente esa duda:

Espero que la respuesta de darkasecas que me dio a mi te sirva.
http://www.forosdelweb.com/f54/ayuda-con-login-externo-phpbb-437896/

Saludos!
  #5 (permalink)  
Antiguo 07/12/2006, 11:27
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: problemas de cookies y cabeceras

tonny gracias por tu ayuda y atención pero es pan para hoy y hambre para mañana porque el problema es que esos header location no me los manda a la pagina error.php, lo que estoy pensando es redireccionarlo con un javascrip como mando el panel_admin.php...no se a ver que opinan los expertos porque no me reconoce el usuario me entra en usuario desconocido y no doy con ello
  #6 (permalink)  
Antiguo 07/12/2006, 16:27
 
Fecha de Ingreso: octubre-2006
Ubicación: Quart de Poblet, Valencia
Mensajes: 767
Antigüedad: 17 años, 6 meses
Puntos: 8
Re: problemas de cookies y cabeceras

Cita:
Iniciado por Javiglez Ver Mensaje
tonny gracias por tu ayuda y atención pero es pan para hoy y hambre para mañana porque el problema es que esos header location no me los manda a la pagina error.php, lo que estoy pensando es redireccionarlo con un javascrip como mando el panel_admin.php...no se a ver que opinan los expertos porque no me reconoce el usuario me entra en usuario desconocido y no doy con ello
Pues nada, lo siento y espero que te contesten pronto.

Saludos!
  #7 (permalink)  
Antiguo 08/12/2006, 04:47
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: problemas de cookies y cabeceras

gracias tony no se q hacer porque tengo todos los scripts con el header location para pasar de una parte a otra de la aplicación web y en todos me da ese warning y no me regoge el usuario en la sesión...
  #8 (permalink)  
Antiguo 08/12/2006, 05:37
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: problemas de cookies y cabeceras

He quitado todos los headers que me daban problemas y los he sustituido por javascript...el tema es que sigue sin crearme sesión, si que entra en la aplicación con lo cual si que esta bien la consulta a la base de datos pero debe tar el problema en la cookies en a clase que os pegue en el primer post aver si alguien me puede ayudar, Gracias
  #9 (permalink)  
Antiguo 08/12/2006, 10:59
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: problemas de cookies y cabeceras

He corregido el codigo, quitando los headers location por javascript y ya no me da esos warnings pero me falla en las lineas en las que establezco las cookies y no doy con ello y yo creo que es por eso por lo que no me abre sesión ni nada a ver si alguna alma caritativa me asesora este es el script entero explicadito....
Código:
<?php 
include("../conectarse_bd.php"); 
//$link=Conectarse(); 
function quitar($mensaje) 
{ 
$mensaje = str_replace("<","&lt;",$mensaje); 
$mensaje = str_replace(">","&gt;",$mensaje); 
$mensaje = str_replace("\'","'",$mensaje); 
$mensaje = str_replace('\"',"&quot;",$mensaje); 
$mensaje = str_replace("\\\\","&#92",$mensaje); 
return $mensaje; 
} 
if(trim($HTTP_POST_VARS["login"]) != "" && trim($HTTP_POST_VARS["pass"]) != "") 
{ 
/*Asi que continuamos suponiendo que todo este bien, ahora lo que hacemos es quitarle el html, 
apostrofe comillas y demas al nick y password enviados por el usuario para su comprobacion 
con la base de datos, para ello utilizamos la funcion quitar($mensaje) que explicamos antes, 
y guardamos las nuevas cadenas en dos nuevas variables:*/ 
$nickN = quitar($HTTP_POST_VARS["login"]); 
$passN = quitar($HTTP_POST_VARS["pass"]); 
/*Ahora ejecutamos una instruccion sql, en la cual le pedimos a la base de da
tos que de la tabla usuarios nos devuelva la fila cuyo nick corresponda por 
el enviado por el usuario: */
$result = mysql_query("SELECT pass FROM Admin WHERE login='$nickN'"); 
if($row = mysql_fetch_array($result)) 
{ 
/*Ahora continuamos con el proceso suponiendo que el usuario exista en la base de datos ahora 
debemos comprobar que el password sea correcto, para ello hacemos una simple comparacion, si 
es correcto continuamos de lo contrario mostramos el mensaje de password incorrecto: */
if($row["pass"] == $passN) 
{ 
//90 dias dura la cookie 
/*Ahora suponiendo que el password es correcto continuamos y lo proximo a hacer es establecer las 
cookies de nick y password (Las cuales nombramos "usNick"/"usPass" y contienen el nick y password
respectivamente) en la maquina del usuario, informamos que se ha realizado correctamente el login
y lo enviamos a la pagina principal
*/
setcookie("usNick",$nickN,time()+7776000); 
setcookie("usPass",$passN,time()+7776000); 
//la pabtalla principal cuando ya te has logeado correctamente
?> 
<body>
<SCRIPT LANGUAGE="javascript"> 
location.href = "panel_admin.php"; 
</SCRIPT> 
</body>
<? 
} 
else 
{ 
?> 
<SCRIPT LANGUAGE="javascript"> 
location.href = "error.php"; 
</SCRIPT> 
<? 
} 
} 
else
	{
?> 
<SCRIPT LANGUAGE="javascript"> 
location.href = "error.php"; 
</SCRIPT> 
<? 
	}
mysql_free_result($result); 
} 
else 
{ 
?> 
<SCRIPT LANGUAGE="javascript"> 
location.href = "error.php"; 
</SCRIPT> 
<?  
} 
mysql_close(); 
?>
  #10 (permalink)  
Antiguo 08/12/2006, 11:10
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: problemas de cookies y cabeceras

os pongo tambien la clase login que es la que va a la que he puesto anteriormente y en la que ya no entra en el bucle del loginCorrecto a ver si el problema viniera de ahi

Código:
<?php 
/*Guardar datos Administrador */
$loginCorrecto = false; 

$nickUsuarioL; 
$emailUsuarioL; 
$nombreUsuarioL; 
/*Copmprobaciono cookies" : */

if(isset($HTTP_COOKIE_VARS["usNick"]) && isset($HTTP_COOKIE_VARS["usPass"])) 
{ 
session_start(); 
$_SESSION["autentificado"]= "SI"; 

/*resultado de nick y pass guardado por las cookies */

$result = mysql_query("SELECT * FROM Admin WHERE login='".$HTTP_COOKIE_VARS["usNick"]."' AND pass='".$HTTP_COOKIE_VARS["usPass"]."'"); 

if($row = mysql_fetch_array($result)) 
{ 
/*si los datos son correctos se actualizan las cookiees caducan a los 90 dias*/ 
 
setcookie("usNick",$HTTP_COOKIE_VARS["usNick"],time()+7776000); 
setcookie("usPass",$HTTP_COOKIE_VARS["usPass"],time()+7776000); 
$loginCorrecto = true; 

$nickUsuarioL = $row["login"];  
$emailUsuarioL = $row["mail"]; 
}
else 
{ 
//Destruimos las cookies.
setcookie("usNick","x",time()-3600); 
setcookie("usPass","x",time()-3600); 
} 
mysql_free_result($result); 
} 
?>
Gracias, que desesperación!!
  #11 (permalink)  
Antiguo 09/12/2006, 04:23
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: problemas de cookies y cabeceras

he revisado hasta la configuración del servidor en php lo de las registers globals etc...y tenia que funcionar, el famoso warning me lo da en la linea 44 y 45 si lo quito no da, las lineas son estas
setcookie("usNick",$nickN,time()+7776000);
setcookie("usPass",$passN,time()+7776000);
y no consigo dar porque es....
ahi va el script entero, hace bien hasta estas líneas...
Código:
<?php 
include("../conectarse_bd.php"); 
//$link=Conectarse(); 
function quitar($mensaje) 
{ 
$mensaje = str_replace("<","&lt;",$mensaje); 
$mensaje = str_replace(">","&gt;",$mensaje); 
$mensaje = str_replace("\'","'",$mensaje); 
$mensaje = str_replace('\"',"&quot;",$mensaje); 
$mensaje = str_replace("\\\\","&#92",$mensaje); 
return $mensaje; 
} 
if(trim($HTTP_POST_VARS["login"]) != "" && trim($HTTP_POST_VARS["pass"]) != "") 
{ 
/*Asi que continuamos suponiendo que todo este bien, ahora lo que hacemos es quitarle el html, 
apostrofe comillas y demas al nick y password enviados por el usuario para su comprobacion 
con la base de datos, para ello utilizamos la funcion quitar($mensaje) que explicamos antes, 
y guardamos las nuevas cadenas en dos nuevas variables:*/ 
$nickN = quitar($HTTP_POST_VARS["login"]); 
$passN = quitar($HTTP_POST_VARS["pass"]); 
/*Ahora ejecutamos una instruccion sql, en la cual le pedimos a la base de da
tos que de la tabla usuarios nos devuelva la fila cuyo nick corresponda por 
el enviado por el usuario: */
$result = mysql_query("SELECT pass FROM Admin WHERE login='$nickN'"); 
if($row = mysql_fetch_array($result)) 
{ 
/*Ahora continuamos con el proceso suponiendo que el usuario exista en la base de datos ahora 
debemos comprobar que el password sea correcto, para ello hacemos una simple comparacion, si 
es correcto continuamos de lo contrario mostramos el mensaje de password incorrecto: */
if($row["pass"] == $passN) 
{ 
//90 dias dura la cookie 
/*Ahora suponiendo que el password es correcto continuamos y lo proximo a hacer es establecer las 
cookies de nick y password (Las cuales nombramos "usNick"/"usPass" y contienen el nick y password
respectivamente) en la maquina del usuario, informamos que se ha realizado correctamente el login
y lo enviamos a la pagina principal
*/
setcookie("usNick",$nickN,time()+7776000); 
setcookie("usPass",$passN,time()+7776000); 
?> 
<SCRIPT LANGUAGE="javascript"> 
location.href = "panel_admin.php"; 
</SCRIPT> 
<? 
} 
else 
{ 
?> 
<SCRIPT LANGUAGE="javascript"> 
location.href = "error.php"; 
</SCRIPT> 
<? 
} 
} 
else
	{
?> 
<SCRIPT LANGUAGE="javascript"> 
location.href = "error.php"; 
</SCRIPT> 
<? 
	}
mysql_free_result($result); 
} 
else 
{ 
?> 
<SCRIPT LANGUAGE="javascript"> 
location.href = "error.php"; 
</SCRIPT> 
<?  
} 
mysql_close(); 
?>
  #12 (permalink)  
Antiguo 09/12/2006, 04:33
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: problemas de cookies y cabeceras

por el fallo de que da y que he leido y requete leido en foros y manuales tiene que ser que mando información a la cabecerera antes de lo del cookie pero no doy con ello, a ver si alguien me puede ayudar porque yo no encuentro nada mal...en el script de arriba
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 01:12.