Programación Web y Scripting > PHP

 Ayuda: Tengo Un Error Utilizando Setcookie.

(1/1)

FAO:
Hola  :hola: , estoy haciendo una pagina con la cual quiero iniciar sesión  y utilizando un cookie me da este error: Warning: Cannot add header information - headers already sent by (output started at c:\ ............) in c:\..........)

Alguien puede ayudarme, desde ya Gracias...!!! :rolleyes:


// este es el codigo php en la cual uso el SETCOOKIE
<?php

   $mensaje = "<br><b><font color='#E60000' face='Arial, Helvetica, sans-serif' size='3'>No puede iniciar sesión, verifique su usuario o contraseña</font></b></font><BR>";
    //$x_meta = "<meta http-equiv='Refresh' content='3'; URL='index.php'>";

    if (isset($usuario , $pass))
    {
        require('configuracion.php');
        $result= mysql_query("select usu_alias, usu_clave, usu_nivel from usuario where usu_alias ='".$usuario."';", $con);

        if ($result)
        {
            $col = mysql_fetch_array($result);
            if (mysql_num_rows($result) > 0)
            {
               extract($col);
               if ($usu_clave == $pass)
               {
                   $mensaje = "<br><b><font color='#6666CC' face='Arial, Helvetica, sans-serif' size='2'>Ha iniciado seción exitósamente..!!</font></b></font><BR>";
                    setcookie('sesion', $usu_alias);
                    if ($usu_nivel=='0')
                       $x_meta = "<meta http-equiv='Refresh' content='20; URL=index_usu_2.php'>";
                    else
                       $x_meta = "<meta http-equiv='Refresh' content='20; URL=index_usu_2.php'>";
               }
          }
        }
     }
   include('encabezado.html');
    echo"<br>";
    include('mensaje.html');
    echo"<br>";
    include('pie.html');
?>

ibito:
creo que los setcookie como los session_start deben ponerse en la primera linea, no debe haber nada antes, algo asi:


--- Código: Text --- &#60;?php   session_start();//demas codigo  
Espero te sirva de algo...

gnfrs:
No, las cookies deben ser enviadas al cliente antes que cualquier otra cosa, es decir, un echo "algo" no debe preceder a setcookie().... pero establecer el valor de una variable como $alfa = 10; no genera inconvenientes.

EJ:

sarasa(); // si esta función no existe y se produce un warning se envía el reporte al explorador y ya no se pueden enviar cookies...
setcookie... // falla


Con las sesiones es exáctamente lo mismo, salvo que estén desabilitadas las cookies, en ese caso el id de sesión es propagado por GET no por cookies y puede ponerse en cualquier parte del script, pero ojo con esto !!!

Saludos.

Altareum:
En realidad el tema es que (sin complicarla mucho) antes que nada, el servidor envía al navegador las cookies y los datos del header de la página, esto lo hace incluso si la página no contiene código.
Un archivo que totalmente vacío, incluso envía headers (o cabeceras), eso lo hace automáticamente para que el navegador identifique lo que se le envía (por eso a veces los txt se ven directamente en el navegador y a veces abre el cartel para descargarlo).

Por ende un archivo como este:

--- Código: Text --- &#60;br&#62;&#60;?phpheader('Location: ....');?&#62;  
Generará un error ya que al tener un <br> el servidor interpreta que comenzó el archivo y envía los headers equivalentes a un archivo html, y por ende no puede volver a enviarlas.
De esta misma forma un archivo que contenga aunque sea un salto de línea antes que se envíen los headers ( o cookies, es lo mismo ya que se envían juntos ), generará este error.
Si el código php genera un mensaje de error antes de que se envíen las cookies, pues generará los headers correspondientes invalidando así el envío de cookies..


Espero que se haya entendido....  <_<  porque no estoy seguro....  :D

Altareum.

Navegación

[0] Índice de Mensajes

Ir a la versión completa