Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/06/2007, 08:26
Abe11
 
Fecha de Ingreso: junio-2007
Mensajes: 41
Antigüedad: 16 años, 11 meses
Puntos: 0
Problema cookies

Hola!! Pues veran, tengo un problema con las cookies ke intento enviar para mantener a un usuario conectado.

Leyendo un tutorial de maestrosdelweb.com sobre sistemas de usuarios en php exactamente en maestrosdelweb /editorial/phpreusr

Veo que hace un setcookie cuando comprueba si el usuario es correcto o no.
Guiandome por eso lo que yo hago es primero al principio del todo antes de cualkier etiketa html incluyo un archivo php que lo que hace es comprobar si existen las cookies y si existen cojer el usuario como hace en el tutorial

Pero el problema me viene cuando alguien va a ingresar o loguearse. Lo que hago es un archivo php que si una variable del anterior archivo esta a 1 aparece simplemente un Bienvenido y el nombre del usuario pero si esta a 0 aparece un formulario para loguearse, Cuando se loguea alguien compruebo su nombre, su contraseña y si es correcto hago un setcookie y he aki el problema ke me da con esto

Warning: Cannot modify header information - headers already sent by (output started at...

El warning me lo da en la linea del setcookie y debe ser xq no lo pongo delante de cualkier html, pero segun el tutorial tampoco lo hace delante, si no en una funcion aparte ke es llamada por el formulario.

Bien, Kreo ke la solucion seria hacer como el tutorial y llamar desde el formulario a una funcion aparte, pero lo que hago yo es esto

<?php
if($logueado)
{
echo'<span class="Letra">Bienvenido'.$cuser.'</span>';
}
else
{
if(!$_POST['login'])
{
include('loguear.php');
}
else
{
require('conex.php');
$usuario=trim($_POST['usuario']);
$passw=trim($_POST['passw']);
$consulta="select usuario from usuarios where usuario='$usuario' and password='$passw'";
$sql=mysql_query($consulta);
$num=mysql_num_rows($sql);
if($num==1)
{
if($row=mysql_fetch_row($sql))
{
$luser=$row;
$logueado=1;
setcookie("cuser",$usuario,time()+60*60*24*7);
setcookie("cpassw",$passw,time()+60*60*24*7);
}
mysql_free_result($sql);
}
else
{
include('loguear.php');
echo'<span class="Error" style="font-size:10px;">Usuario o Contraseña incorrecta <a href="olvido.php">¿¿olvidaste tu contraseña??</a></span>';
}
}
}

?>

donde logueado es la variable del primer archivo ke komprueba si estan las cookies o no.
Si no estan hace un if si ha pulsado el boton de login o no. Si no lo ha pulsado
aparece el formulario ke es loguear.php(aunke es todo html) y si lo ha pulsado comprueba nick, contraseña y si es correcto todo hace el setcookie y pone a 1 la variable logueado para que aparezca el mensaje de bienvenida si no es correcto aparece el formulario y un mensaje de error debajo.

El formulario es este
<span class="Letra">
<form method="post" name="login">
Usuario
<input name="usuario" type="text" class="Caja" maxlength="20">
Contraseña
<input name="passw" type="password" class="Caja" maxlength="12">
<input name="login" type="submit" class="Letra" value="Login">
</form>
</span>

La razon para que el formulario no tenga accion y no llame a ninguna funcion es para ke siempre me aparezca la misma pagina principal y solo cambie esta parte de la pagina la de este script, y por eso compruebo lo del boton de login en vez de llamar a una accion con el formulario.

La cuestion es entonces como hago para que no me de el error en el setcookie sin tener ke llamar a otra funcion y x lo tanto ke aparezca otra pagina ke no sea la principal donde se encuentra el script.

Despues de todo este rollo no se si me explicado bien, de todas formas Gracias de antemano.