Foros del Web » Programando para Internet » PHP »

Error de sesión.

Estas en el tema de Error de sesión. en el foro de PHP en Foros del Web. Este es el error obtenido: Cita: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /media/hda6/serv_web/cadiz_canal/header.php:19) in /media/hda6/serv_web/cadiz_canal/modulos/admin.php on ...
  #1 (permalink)  
Antiguo 13/05/2006, 14:00
Avatar de keldrox  
Fecha de Ingreso: noviembre-2005
Mensajes: 95
Antigüedad: 18 años, 5 meses
Puntos: 2
Error de sesión.

Este es el error obtenido:

Cita:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /media/hda6/serv_web/cadiz_canal/header.php:19) in /media/hda6/serv_web/cadiz_canal/modulos/admin.php on line 59
Es una web modular (parecida a php-nuke) pero hecha desde 0. Pero el tema de las sessiones no las he empleado mucho y toy ya loco. Os dejo el script para que le hecheis un vistazo.

Código PHP:
// Miramos si se está autentificandose un usuario por medio del formulario.
if (isset($_POST['user']) && isset($_POST['pass']))
{
    
$usuario_consulta mysql_query("SELECT ID,usuario,pass,nivel_acceso FROM usuarios2 WHERE usuario='".$_POST['user']."'") or die(header ("Location:  $redir?error_login=1"));
    
// miramos el total de resultado de la consulta (si es distinto de 0 es que existe el usuario)
     
if (mysql_num_rows($usuario_consulta) != 0)
    {
        
// eliminamos barras invertidas y dobles en sencillas
        
$login stripslashes($_POST['user']);
        
// encriptamos el password en formato md5 irreversible.
        
$password md5($_POST['pass']);

        
// almacenamos datos del Usuario en un array para empezar a chequear.
         
$usuario_datos mysql_fetch_array($usuario_consulta);
        
        
// liberamos la memoria usada por la consulta, ya que tenemos estos datos en el Array.
        
mysql_free_result($usuario_consulta);
        
        
// chequeamos el nombre del usuario otra vez contrastandolo con la BD
        // esta vez sin barras invertidas, etc ...
        // si no es correcto, salimos del script con error 4 y redireccionamos a la
        // página de error.
        
if ($login != $usuario_datos['usuario'])
        {
            echo 
"<META HTTP-EQUIV='refresh' CONTENT='0; URL=index.php?mod=admin.php&error_login=4'>";
            exit;
        }
        
        
// si el password no es correcto ..
        // salimos del script con error 3 y redireccinamos hacia la página de error
        
if ($password != $usuario_datos['pass'])
        {
            echo 
"<META HTTP-EQUIV='refresh' CONTENT='0; URL=index.php?mod=admin.php&error_login=3'>";
            exit;
        }
        
        
//destruimos las variables login y password usadas
        
unset($login);
        unset (
$password);
        
        
// En este punto, el usuario ya esta validado.
        // Grabamos los datos del usuario en una sesion.
        // le damos un mobre a la sesion.
        
session_name($usuarios_sesion);
        
// incia sessiones
        
session_start(); 
Es sacado de un script que me bajado de internet (autor:Cluster), ya que ando loco intentalo hacer y no puedo. Los datos son enviados desde un formulario.

¿ Alguien me puede informar el porque de este error ?

UN saludo y muchas gracias.
  #2 (permalink)  
Antiguo 13/05/2006, 14:18
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
NO se pueden enviar cabeceras http (datos de sesión o header()) si ya se envió texto al navegador.
El error te dice que enviaste datos al navegador (texto) en la línea 19, y luego intentás enviar cabeceras http en la línea 59.

Un detalle (muy importante, sin embargo): NO uses META para redireccionar.

Primero que no es para eso (es para actualizar la página, aunque se use para redirecciones) y segundo que para eso está la función header()

ejemplo, para direccionar inmediatamente a algo.php:
Código PHP:
<?php
header
("Location: algo.php");
exit;
?>
(siempre con exit si no querés que el programa actual se siga ejecutando)


Saludos.
  #3 (permalink)  
Antiguo 13/05/2006, 16:21
Avatar de keldrox  
Fecha de Ingreso: noviembre-2005
Mensajes: 95
Antigüedad: 18 años, 5 meses
Puntos: 2
Utilizaba los meta porque los header me dan fallo, -_-! y no detecto el xq del error. Pero ahora con las sesiones parece ser que tambien pasa el mismo error... ¿alguna solucion habra no?

Me tira este error:

Cita:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /media/hda6/serv_web/cadiz_canal/header.php:19) in /media/hda6/serv_web/cadiz_canal/modulos/admin.php on line 59
Linea 19 header.php

Código PHP:
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n"
Linea 59 admin.php

Código PHP:
// incia sessiones
        
session_start(); 

Me gustaría saber el por que, ya que ando un poco liado, ademas es el proyecto fin de curso y me gustaría que funcionara.

Un saludo y muchisimas gracias por cualquier aporte o ayuda.
  #4 (permalink)  
Antiguo 13/05/2006, 16:54
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
keldrox te pasas....

si vas a poenr session_start() TIENE Q ESTAR EN LA PRIMERA LINEA DE ARCHIVO PHP y no podes poner NINGUN Echo
sino salta el error
  #5 (permalink)  
Antiguo 13/05/2006, 17:16
Avatar de keldrox  
Fecha de Ingreso: noviembre-2005
Mensajes: 95
Antigüedad: 18 años, 5 meses
Puntos: 2
Aja, pufff tendre que modificar muchas cosas, ya que tenia la llamada a la sesion adentro de un archivo que se llamaba desde un include cuando ya habia cargado las cabeceras.

Así que lo que hare sera poner una funcion en el index.php que se encarge de gestionar a las sesiones, asi no abra html de por medio... xq otra no se me ocurre.


Bueno un saludo y voy a ponerme manos a la obra, ya os contare que tal.

Un saludo y gracias!!!
  #6 (permalink)  
Antiguo 14/05/2006, 13:31
Avatar de keldrox  
Fecha de Ingreso: noviembre-2005
Mensajes: 95
Antigüedad: 18 años, 5 meses
Puntos: 2
Bueno solo era para comunicaros que ya esta todo solucionado y puedo seguir con mi proyecto, muchas gracias por el dato de que las sesiones no debes enviar nada de html antes.

Un saludo y muchas gracias de nuevo!
  #7 (permalink)  
Antiguo 14/05/2006, 15:04
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
todo bien, pero tu error fue el TIPICO, el manual es bastante especifico si mal no recuerdo ;), saludos y suerte con tu proyecto
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 13:25.