Foros del Web » Programando para Internet » PHP »

error en setcookie del login.php

Estas en el tema de error en setcookie del login.php en el foro de PHP en Foros del Web. Tengo un problema a la hora del ingreso (logeo), el registro.php funciona bien, pero me manda un error en login.php en las lineas 38 y ...
  #1 (permalink)  
Antiguo 03/06/2006, 23:05
Avatar de ramon92  
Fecha de Ingreso: enero-2004
Ubicación: Lima
Mensajes: 135
Antigüedad: 13 años, 10 meses
Puntos: 8
error en setcookie del login.php

Tengo un problema a la hora del ingreso (logeo), el registro.php funciona bien, pero me manda un error en login.php en las lineas 38 y 39 q justo es las lineas de setcookie, el error lo escribo a continuacion:
Cita:
Warning: Cannot modify header information - headers already sent by (output started at /home/xxxxxxxxx/html/1/login.php:21) in /home/xxxxxxxxx/html/1/login.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /home/xxxxxxxxx/html/1/login.php:21) in /home/xxxxxxxxx/html/1/login.php on line 39
setcookie("usNick",$_COOKIE["usNick"],time()+7776000);
setcookie("usPass",md5(SID),time()+7776000);

Les dejo el codigo del login.php a ver si alguien me da una mano




Código PHP:
<?php
// Inicializamos las variables 
$loginCorrecto false
unset(
$_SESSION['id']); 
$nickUsuarioL=""
$emailUsuarioL=""
$nombreUsuarioL=""
//Inicializamos el nº de recargas de la página si no está inicializado 
if(!isset($_SESSION['recarga'])){$_SESSION['recarga'] = 0;} 
//Inicializamos la variable sid para utilizarla más tarde 
$sid md5(SID); 

//Incluimos el script que detecta el navegador y la IP del usuario 
include('identificar.inc.php'); 
//Hayamos la variable que le corresponde al navegador que se está usando  
//para luego compararla con la de la base de datos 
$identificador md5(get_full_ip() .'-'browser_detection()); 

if(isset(
$_COOKIE["Acepta"]))// Comprueba si acepta cookies 

    echo 
'Acepto cookies, que pasa?!!??<br>'

    
// Comprueba que existan las cookies de nick y password 
    
if(isset($_COOKIE["usNick"]) && isset($_COOKIE["usPass"])) 
    { 
        
// Comprueba q haya un usuario en la BD con esos datos 
        
$result mysql_query("SELECT * FROM usuarios WHERE  
            nick = '"
.$_COOKIE["usNick"]."' AND 
            sid = '"
.$_COOKIE["usPass"]."' AND 
            identificador = '"
.$identificador."'"); 
        if(
$row mysql_fetch_array($result))  
        { 
            
$sql "Update usuarios Set  
                sid = '"
.$sid."', 
                ultima_visita = NOW() 
                Where id = '"
.$row['id']."'"
            
mysql_query($sql) or die (mysql_error()); 
            
setcookie("usNick",$_COOKIE["usNick"],time()+7776000);
            
setcookie("usPass",md5(SID),time()+7776000);            $_SESSION['usNick'] = $_COOKIE["usNick"]; 
            
$_SESSION['usPass'] = md5(SID); 
            
$_SESSION['id'] = $row['id'];  
            
            
$loginCorrecto true
            
$nickUsuarioL $row["nick"]; 
            
$emailUsuarioL $row["email"]; 
            
$nombreUsuarioL $row["nombre"]; 
        }  
        else     
        { 
            
// Si no existe, destruimos las cookies. 
            
setcookie("usNick","x",time()-3600); 
            
setcookie("usPass","x",time()-3600); 
        } 
        
mysql_free_result($result);// Libera la consulta 
    


else 
// Si es que no acepta cookies 

    
// Comprueba si ya ha probado a escribir la cookie y si ya ha probado es que no se aceptan 
    
if (!isset($_COOKIE['Acepta']) && $_SESSION['recarga'] > 1
    { 
        echo 
'No acepto cookies, que pasa?!!??<br>'
    } 
     
    
// Comprueba las variables de nick y password pero esta vez en variables de sesión 
    
if(isset($_SESSION["usNick"]) && isset($_SESSION["usPass"])) 
    { 
        
// Comprueba q haya un usuario en la BD con esos datos 
        
$result mysql_query("SELECT * FROM usuarios WHERE  
            nick = '"
.$_SESSION["usNick"]."' AND  
            sid = '"
.$_SESSION["usPass"]."' AND  
            identificador = '"
.$identificador."'"); 
        if(
$row mysql_fetch_array($result))  
        {             
            
$sql "Update usuarios Set  
                ultima_visita = NOW() 
                Where id = '"
.$row['id']."'"
            
mysql_query($sql) or die (mysql_error()); 
             
            
// Si es que existe registra unas cuantas variables q pueden ser utiles  
            
$_SESSION['id'] = $row['id']; 
            
$loginCorrecto true
            
$nickUsuarioL $row["nick"]; 
            
$emailUsuarioL $row["email"]; 
            
$nombreUsuarioL $row["nombre"]; 
        }  
        else     
        { 
            
// Si no existe destruimos las sesiones. 
            
unset($_SESSION['usNick']); 
            unset(
$_SESSION['usPass']); 
            unset(
$_SESSION['id']); 
        } 
        
mysql_free_result($result);// Libera la consulta 
    


// Esto indica que la ya se ha probado a escribir la cookie 
$_SESSION['recarga'] = $_SESSION['recarga']+1
?>
__________________
Hosting Peru.ME | Hosting para Empresas
Agencia de Publicidad Online (Enjoy the difference)
  #2 (permalink)  
Antiguo 03/06/2006, 23:58
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 11 años, 10 meses
Puntos: 3
En ningun momento haces session_start();
  #3 (permalink)  
Antiguo 04/06/2006, 00:21
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 6 meses
Puntos: 2
El error te esta diciendo claramente que no puedes enviar cabeceras HTML porque antes en algun momento mandaste algún tipo de contenido al navegador. Lo que tienes que evitar es utilizar los echo o mandar etiquetas HTML (o un simple espacio antes de las etiquetas de php) antes de utilizar alguna función que envie cabeceras HTML, como session_start() y supongo que setcookie() (no estoy seguro, nunca las utilice porque no me gustan para nada las cookie's, pero el error esta marcando esas lineas así que lo creo logico).

Saludos y suerte.
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 09:25.