Foros del Web » Programando para Internet » PHP »

Error Al Utilizar Cookies

Estas en el tema de Error Al Utilizar Cookies en el foro de PHP en Foros del Web. A ver si pueden ayudarme: Estoy utilizando el manual de esta misma web para el registro y reconocimiento de usuarios con php. La parte de ...
  #1 (permalink)  
Antiguo 12/07/2005, 03:48
 
Fecha de Ingreso: julio-2005
Mensajes: 110
Antigüedad: 12 años, 5 meses
Puntos: 1
Error Al Utilizar Cookies

A ver si pueden ayudarme:
Estoy utilizando el manual de esta misma web para el registro y reconocimiento de usuarios con php. La parte de registrar usuarios me funciona a la perfección, el problema surge cuando quiero iniciar sesion con un usuario, y es que me salen unos mensajes de error que no termino de comprender. Me pone esto:
Warning: Cannot modify header information - headers already sent by (output started at C:\httpd\htdocs\sitio1\principal.php:3) in C:\httpd\htdocs\sitio1\login.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at C:\httpd\htdocs\sitio1\principal.php:3) in C:\httpd\htdocs\sitio1\login.php on line 16
Estas identificado en el sistema como molin
Como podeis comprobar en la linea en negrita, si que me reconoce al usuario, pero no entiendo los dos warnings.
  #2 (permalink)  
Antiguo 12/07/2005, 03:52
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 384
Antigüedad: 12 años, 10 meses
Puntos: 0
parece que estas repitiendo una informacion 2 veces. Pon tu codigo php aki para que podamos ver exactamente donde peta. :)
__________________
m!ketrix
CINE25 - Red Social de Cine
byinspiroh
  #3 (permalink)  
Antiguo 12/07/2005, 03:52
cartucho
Invitado
 
Mensajes: n/a
Puntos:
hola,

estás poniendo alguna cabecera o algo que no es correcto (puede ser un header que no está en el sitio correcto). Si pones el código de la página podremos mirar el fallo,

saludos
  #4 (permalink)  
Antiguo 12/07/2005, 04:00
 
Fecha de Ingreso: julio-2005
Mensajes: 110
Antigüedad: 12 años, 5 meses
Puntos: 1
el código de menu.php que es a quien le mando los datos del formulario es:

linea5(donde da error)<?php
include("login.php");
if($loginCorrecto)
{
echo "Estas identificado en el sistema como ".$nickUsuarioL;
}
else
{
print("<FORM ACTION=ingresar.php METHOD=post> ");
print("Nick : <INPUT TYPE=text NAME=nick SIZE=20 MAXLENGTH=20> ");
print("<BR> ");
print("Password: <INPUT TYPE=password NAME=password SIZE=28 MAXLENGTH=20> ");
print("<BR> ");
print("<INPUT TYPE=submit CLASS=boton VALUE=Ingresar> ");
print("</FORM>");
}
?>

y el de login.php es:

<?php
$loginCorrecto = false;
$idUsuarioL;
$nickUsuarioL;
$emailUsuarioL;
$nombreUsuarioL;
include ("funciones.php");
$link=conectarse();

if(isset($HTTP_COOKIE_VARS["usNick"]) && isset($HTTP_COOKIE_VARS["usPass"]))
{
$result = mysql_query("SELECT * FROM usuarios WHERE nick='".$HTTP_COOKIE_VARS["usNick"]."' AND password='".$HTTP_COOKIE_VARS["usPass"]."'",$link);
if($row = mysql_fetch_array($result))
{
linea 15(da error)setcookie("usNick",$HTTP_COOKIE_VARS["usNick"],time()+7776000);
linea 16(da error)setcookie("usPass",$HTTP_COOKIE_VARS["usPass"],time()+7776000);
$loginCorrecto = true;
$idUsuarioL = $row["id"];
$nickUsuarioL = $row["nick"];
$emailUsuarioL = $row["email"];
$nombreUsuarioL = $row["nombre"];
}
else
{
//Destruimos las cookies.
setcookie("usNick","x",time()-3600);
setcookie("usPass","x",time()-3600);
}
mysql_free_result($result);
}
?>


Estos son las dos páginas que se nombran en el warning.

Muchas gracias
  #5 (permalink)  
Antiguo 12/07/2005, 04:06
 
Fecha de Ingreso: julio-2005
Mensajes: 110
Antigüedad: 12 años, 5 meses
Puntos: 1
El error es a la hora de la actualización de la cookie para que dure 90 días más una vez que el usuario se conecta pero no se pq se produce
  #6 (permalink)  
Antiguo 12/07/2005, 04:19
cartucho
Invitado
 
Mensajes: n/a
Puntos:
el problema está a la hora de establecer las cookies, eso has de hacerlo en el encabezado de la página,normalmente no deberías poner nada antes del setcookie, ni siquiera lineas en blanco,

saludos
  #7 (permalink)  
Antiguo 12/07/2005, 04:26
 
Fecha de Ingreso: julio-2005
Mensajes: 110
Antigüedad: 12 años, 5 meses
Puntos: 1
No creo que sea ese el problema pq en ingresar.php defino las cookies de forma parecida y no me da warning:

<?php
include ("funciones.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["nick"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
{
$nickN = quitar($HTTP_POST_VARS["nick"]);
$passN = quitar($HTTP_POST_VARS["password"]);

$result = mysql_query("SELECT password FROM usuarios WHERE nick='$nickN'",$link);
if($row = mysql_fetch_array($result))
{
if($row["password"] == $passN)
{
//90 dias dura la cookie
setcookie("usNick",$nickN,time()+7776000);
setcookie("usPass",$passN,time()+7776000);

?>
Ingreso exitoso, ahora sera dirigido a la pagina principal.
<SCRIPT LANGUAGE="javascript">
location.href = "menu.php";
</SCRIPT>
<?
}
else
{
echo "Password incorrecto";
}
}
else
{
echo "Usuario no existente en la base de datos";
}
mysql_free_result($result);
}
else
{
echo "Debe especificar un nick y password";
}
mysql_close();
?>
  #8 (permalink)  
Antiguo 12/07/2005, 04:35
cartucho
Invitado
 
Mensajes: n/a
Puntos:
El código es la página completa?o solo has puesto una parte?

Del manual de php:

setcookie() define una cookie para ser enviada con el resto de la información de la cabecera. Las cookies deben enviarse antes de mandar cualquier otra cabecera (esta es una restricción de las cookies, no de PHP). Esto requiere que sitúe las llamadas a esta función antes de cualquier etiqueta <html> o <head>.

puede que en ingresar.php no te de error "por suerte", pero la forma de hacerlo no es correcta, te lo digo por que a mi me pasaba algo parecido
  #9 (permalink)  
Antiguo 12/07/2005, 04:37
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 384
Antigüedad: 12 años, 10 meses
Puntos: 0
si, lo que dice cartucho me suena. Lo mismo me pasaba con el start_session(). Tiene que ser lo primero.
__________________
m!ketrix
CINE25 - Red Social de Cine
byinspiroh
  #10 (permalink)  
Antiguo 12/07/2005, 04:38
 
Fecha de Ingreso: julio-2005
Mensajes: 110
Antigüedad: 12 años, 5 meses
Puntos: 1
Tienes toda la razón del mundo, me acabo de dar cuenta justo antes de tu último mensaje. Efectivamente ingresar no lleva código html, mientras que en menu variaba el valor de la cookie despues de html.

Muchísimas gracias por vuestra ayuda.

Poco a poco voy aprendiendo más cosillas del mundo php.ME ENCANTAAAAAA¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
  #11 (permalink)  
Antiguo 12/07/2005, 05:09
cartucho
Invitado
 
Mensajes: n/a
Puntos:
con paciencia todo se aprende, yo me tiraba de los pelos al principio

saludos
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 04:56.