Foros del Web » Programando para Internet » PHP »

Fallo con sesiones

Estas en el tema de Fallo con sesiones en el foro de PHP en Foros del Web. Hola buenas tengo un script que me arroja los siguientes fallos: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started ...
  #1 (permalink)  
Antiguo 11/06/2010, 08:43
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Fallo con sesiones

Hola buenas tengo un script que me arroja los siguientes fallos:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\autentificacion\ingreso.php:2) in C:\xampp\htdocs\autentificacion\ingreso.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\autentificacion\ingreso.php:2) in C:\xampp\htdocs\autentificacion\ingreso.php on line 3


este es el codigo del script
Código PHP:
 <?
    session_start
();

    
$_SESSION["user"]=$_POST['usuario'];
    
$_SESSION["pass"]=$_POST['clave'];
    
$_SESSION["falla"]=0;

    
?>

<meta http-equiv=”refresh” content=”3; url=ingreso2.php” />
<html>
<body>

    <?
    $user
=$_POST['usuario'];
    
$pass=$_POST['clave'];

    if(empty(
$user))
    {
    echo 
'No ha ingresado un nombre de usuario. <br> Sera redirigido de vuelta.';
    
$_SESSION["falla"]=1;
    }

    else
    {
    if(empty(
$pass))
    {
    echo 
'No ha ingresado una clave. <br> Sera redirigido de vuelta.';
    
$_SESSION["falla"]=1;
    }

    else
    {
    
$con=mysql_connect("localhost","root","");

    
mysql_select_db("autentificacion"$con);

    
$sql="SELECT usuario, clave, nombre FROM usuario WHERE usuario='$user'";

    
$resultado=mysql_query($sql,$con);

    if(!
$resultado)
    {
    
$error=mysql_error();
    print 
$error;
    
$_SESSION["falla"]=1;
    exit();
    }

    if(
mysql_affected_rows()==0)
    {
    echo 
'El usuario no fue encontrado. <br> Sera redirigido de vuelta.';
    
$_SESSION["falla"]=1;
    exit();
    }

    else
    {
    
$row=mysql_fetch_array($resultado);

    
$nombre=$row['nombre'];


    if(
$user==$row['usuario'])
    {
    if(
$pass==$row['clave'])
    {
    echo 
'<b>Bienvenido '.$user.'</b>. <br> Espere mientras es redirigido';
    
$_SESSION["nombre"]=$nombre;

    }
    else
    {
    echo 
'Hay un error en la clave. <br> Espere mientras es redirigido';
    
$_SESSION["falla"]=1;
    }
    }
    else
    {
    echo 
'Hay un error en el nombre de usuario. <br> Espere mientras es redirigido';

    
$_SESSION["falla"]=1;
    }

    }
    }
    }

    
?>

</body>
</html>
  #2 (permalink)  
Antiguo 11/06/2010, 08:46
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Fallo con sesiones

revisa que no haya ningún espacio ni salto de linea antes de "<?"
  #3 (permalink)  
Antiguo 11/06/2010, 08:47
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Respuesta: Fallo con sesiones

holaa

Ese error es tipico y te sale porque ya has enviado alguna contenido en html antes de enviar a session_start.

es posible?

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #4 (permalink)  
Antiguo 11/06/2010, 08:51
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Fallo con sesiones

Muchas gracias de nuevo quike88 no aparecen los errores, pero no me redirecciona, este es el srcipt de redireccion
Código PHP:
<?
session_start
();
if(
$_SESSION["falla"]==0)
{
$_SESSION["autorizacion"]="si";
header("Location: index.php");
}
else
{
unset(
$_SESSION["falla"]);
session_destroy();
header("Location: index.html");
}
?>
  #5 (permalink)  
Antiguo 11/06/2010, 08:54
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Fallo con sesiones

Eran los espacios como decia quike88 sergi_climent
  #6 (permalink)  
Antiguo 11/06/2010, 08:58
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
Respuesta: Fallo con sesiones

Cita:
Iniciado por erxaca Ver Mensaje
Eran los espacios como decia quike88 sergi_climent
para el caso es lo mismo!

en el caso de la redirección? has comprobado que te lleguen bien las varibles de Session?

saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #7 (permalink)  
Antiguo 11/06/2010, 09:05
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Fallo con sesiones

mmm.. no veo error en el código, no te sale algún error?? revisa el valor q tiene la variable de session,

bueno y como en el caso anterior, fíjate q no haya espacios ni nada de html antes del php
  #8 (permalink)  
Antiguo 11/06/2010, 09:22
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Fallo con sesiones

si las variables de session son correctas, tanto "falla" como "user" y "pass"
  #9 (permalink)  
Antiguo 11/06/2010, 09:37
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Fallo con sesiones

El fallo esta en este script
Código PHP:
<?
session_start
();
$_SESSION["user"]=$_POST['usuario'];
$_SESSION["pass"]=$_POST['clave'];
$_SESSION["falla"]=0;
?>
<meta http-equiv=”refresh” content=”3; url=ingreso2.php” />

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>

<?
$user
=$_POST['usuario'];
$pass=$_POST['clave'];
if(empty(
$user))
{
  echo 
'No ha ingresado un nombre de usuario. <br> Sera redirigido de vuelta.';
  
$_SESSION["falla"]=1;
}
/* Utilizaremos la función empty de PHP mediante la cual preguntaremos si nuestra variable $user (la que contiene el valor de usuario del formulario) se encuentra vacia, lo que significaría que el usuario no ingreso nada en el campo. Si este fuera el caso, desplegaríamos un mensaje en la página con “echo” y luego cambiariamos el valor de nuestra variable “falla” (la bandera definida en el vector de sesión) a 1. En caso de que el usuario no este vacío, pasamos al else y revisamos lo demás */
else
{
  if(empty(
$pass))
{
  echo 
'No ha ingresado una clave. <br> Sera redirigido de vuelta.';
  
$_SESSION["falla"]=1;
}
/* Haremos la misma comprobación anterior pero en este caso con la variable $pass (que almacena el valor de clave del formulario). En caso de que no este vacía, pasamos al else */
else
{
  
$con=mysql_connect("localhost","root","");
  
mysql_select_db("usuario"$con);
  
$sql="SELECT usuario,clave,nombre FROM usuario WHERE usuario='$user'";
  
$resultado=mysql_query($sql,$con);
  if(!
$resultado)
  {
    
$error=mysql_error();
    print 
$error;
    
$_SESSION["falla"]=1;
    exit();
  }
  if(
mysql_affected_rows()==0)
  {
    echo 
'El usuario no fue encontrado. <br> Sera redirigido de vuelta.';
    
$_SESSION["falla"]=1;
    exit();
  }
  else
  {
    
$row=mysql_fetch_array($resultado);
    
$nombre=$row['nombre'];
    if(
$user==$row['usuario'])
    {
      if(
$pass==$row['clave'])
      {
        echo 
'<b>Bienvenido '.$nombre.'</b>. <br> Espere mientras es redirigido';
        
$_SESSION["nombre"]=$nombre;
      }
    else
    {
      echo 
'Hay un error en la clave. <br> Espere mientras es redirigido';
      
$_SESSION["falla"]=1;
    }
    }
    else
    {
      echo 
'Hay un error en el nombre de usuario. <br> Espere mientras es redirigido';
      
$_SESSION["falla"]=1;
    }
  }
}
}

?>

</body>
</html>
no me ejcuta esta linea
Código PHP:
<meta http-equiv=”refresh” content=”3url=ingreso2.php” /> 
  #10 (permalink)  
Antiguo 11/06/2010, 10:09
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Fallo con sesiones

Error solucionado, esta es la sintaxis correcta para http-equiv="refresh":
<meta http-equiv="refresh" content="5;url=http://example.com/" />

Gracias una vez mas
  #11 (permalink)  
Antiguo 11/06/2010, 11:49
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Fallo con sesiones

Vaya!, ahora cuando me logeo correctamente me manda bien a la pagina que debe enviarme pero me lleva como que no tengo permisos, es decir como si intentase entrar sin antes loguearme

A la pagina que me manda le añado este codigo para cumplir con las sesiones
Código PHP:
<?
            
if($_SESSION["autorizacion"]=='si')
            {
                       
//Muestro el contendio
                    
}
            else
            {
            
//Alerta de fallo de autentificacion
             
}
?>
  #12 (permalink)  
Antiguo 11/06/2010, 11:52
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Fallo con sesiones

Vaya!, ahora cuando me logeo correctamente me manda bien a la pagina que debe enviarme pero me lleva como que no tengo permisos, es decir como si intentase entrar sin antes loguearme

A la pagina que me manda le añado este codigo para cumplir con las sesiones
Código PHP:
<?
            
if($_SESSION["autorizacion"]=='si')
            {
                       
//Muestro el contendio
                    
}
            else
            {
            
//Alerta de fallo de autentificacion
             
}
?>
antes en otro script relleno la sesion "autorizacion"
Código PHP:
<?
session_start
();
if(
$_SESSION["falla"]==0)
{
$_SESSION["autorizacion"]='si';
header("Location: admin/index.php");
}
else
{
unset(
$_SESSION["falla"]);
session_destroy();
header("Location: index.html");
}    
?>
  #13 (permalink)  
Antiguo 11/06/2010, 14:46
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 8 meses
Puntos: 87
Respuesta: Fallo con sesiones

te falta

session_start();

Etiquetas: fallo, sesiones
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:14.