Comunidad de diseño web y desarrollo en internet online

ayuden con esto: Warning: session_start() [function.session-

Citar            
MensajeEscrito el 09 Jun 2009 09:53 pm
Hola q tal,
bueno tengo un problema con session_start();
lo q pasa es que cuando ejecuto el index.php me sale esto:

Código :

 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent


no logro sacar cual es el problema, les dejo el codigo pa q vean si me estoy equivocando en algo.

Código PHP :

<?php
session_start();
ob_start();
if(!isset($_SESSION['usuario']))
{
   echo "<script>alert('Primero debe loguearse en la Web.')</script>";
   include_once("login.php");
}
else
{
?>
<!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>
<link href="style/style.css" type="text/css" rel="stylesheet" />
</head>
<body>
<p>
<a href="?accion=inicio">Inicio</a> |
<a href="?accion=opcion1">opcion 1</a> | 
<a href="?accion=opcion2">opcion 2</a> | 
<a href="cerrarsession.php">Cerrar Session</a></p>
<?php 
$accion = $_GET['accion'];
   if(isset($accion))
   {
      @include('vista/'.$accion.'.php');
   }
   else
   {
      echo '<p>Bienvenido, </p>';   
   }
?>
</body>
</html>
<?php
}
?>


gracias de ante mano.
otra cosa, con ese mismo codigo antes usaba el header("Location: login"); en vez de include_once... pero al igual que el session_start(); me daba error entonces preferi cambiarlo, pero el session_start(); si lo necesito.
de nuevo gracias y saludos xD

Por sebas_burgos

15 de clabLevel



Genero:Masculino  

Desarrollador en Papaya.pe

firefox
Citar            
MensajeEscrito el 09 Jun 2009 10:01 pm
cierra el ob_start con esto

<?
ob_end_flush();
?>

prueba asi y me dices saludos

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 10 Jun 2009 12:08 am
mm naa broer... ya intente d todas las formas y sigue el mismo error :/

Por sebas_burgos

15 de clabLevel



Genero:Masculino  

Desarrollador en Papaya.pe

msie8
Citar            
MensajeEscrito el 10 Jun 2009 03:01 am
coloca ob_start(); antes de iniciar la sesion a ver que te sale

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 10 Jun 2009 03:18 am
sebas_burgos el error te aparece cuando el usuario no esta logueado :? , si es asì no puedes decir cual es el contenido del archivo "login.php" tal vez el error venga de ese archivo.

Otra cosa, con que finalidad estas utilizando el método "ob_start()"

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Jun 2009 03:40 am
pero el archivo login.php cuando se ejecuta solo corre perfecto... el problema es el index... y el ob_start(); lo uso porque hasta donde sé habilita la opcion para modificar los header... cosa que me marca error.. de todas maneras te mando el login para que lo veas...

Código :

<!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>
<script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<script src="SpryAssets/SpryValidationPassword.js" type="text/javascript"></script>
<link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
<link href="SpryAssets/SpryValidationPassword.css" rel="stylesheet" type="text/css" />
<link href="style/style.css" type="text/css" rel="stylesheet" />
</head>
<body><div align="center">
<p>Correo</p>
<form id="form1" name="form1" method="post" action="login.procesar.php">
  <span id="sprytextfield1">
  <label>
    <input name="correo" type="text" id="correo" value="<?php echo $_COOKIE['cookie_correo'] ?>" />
  </label>
  <span class="textfieldRequiredMsg">Se necesita un valor.</span></span>
  <p>Password:</p>
  <p><span id="sprypassword1">
  <label>
    <input name="password" type="password" id="password" value="<?php echo $_COOKIE['cookie_password'] ?>" />
  </label>
  <span class="passwordRequiredMsg">Se necesita un valor.</span></span></p>
  <p>
    <label>
      <input type="checkbox" name="recordar" id="recordar" />
      Recordar Datos</label>
  </p>
  <p>
    <label>
      <input type="submit" name="entrar" id="entrar" value="Entrar" />
    </label>
  </p>
  <p><a href="registrar.php">registrate</a> | <a href="olvidepass.php">olvidé mi password</a></p>
  <?php
  $acceso = $_GET['acceso'];
  if(isset($acceso))
  {
  ?>
  <p style="color: #F00;">*El usuario y/o el password no son correctos.</p>
  <?php } ?>
</form>
<script type="text/javascript">
<!--
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "none", {validateOn:["blur", "change"], minChars:5});
var sprypassword1 = new Spry.Widget.ValidationPassword("sprypassword1", {validateOn:["blur", "change"], minChars:5});
//-->
</script>
</div>
</body>
</html>


y por si acaso.. ahi t mando el archivo del action

Código PHP :

<?php 
   session_start();
   ob_start();
   require("aki ta el archivo del para entrar a la base de datos aparte de que llama a un archivo que tiene funciones globales para sql");
   /////////////////////////////////////////////////////////////
   $form = $_POST;
   /////////////////////////////////////////////////////////////
   $correo = $form['correo'];
   $password = $form['password'];
   /////////////////////////////////////////////////////////////
   $correo = addslashes($correo);
   $password = addslashes($password);
   /////////////////////////////////////////////////////////////
   $sql = "confidencial >.<";
   $sql.= "confidencial >.<";";
   $login = $conn->mostrar($sql);
   ////////////////////////////////////////////////////////////
   if(count($login) > 0)
   {
      //se logueo correctamente
      $_SESSION['confidencial >.<";'] = $login[0];
      //si quiere recordar sus datos
      if(isset($form['recordar']))
      {
         //hoy + 60''*60'*24h*nDIAS
         $validez = time() + (60 * 60 * 24 * 90);
         setcookie("cookie_correo", $correo, $validez);
         setcookie("cookie_password", $password, $validez);
      }
      $_SESSION['confidencial >.<";'] = $correo;
      header("Location: index.php");            
   }
   else
   {
      header("Location: login.php?acceso=false");
   }
?>


de todas maneras sé que el problema esta en el index u.u

Por sebas_burgos

15 de clabLevel



Genero:Masculino  

Desarrollador en Papaya.pe

msie8
Citar            
MensajeEscrito el 10 Jun 2009 03:42 am
jeje por si acaso me acabo de equivocar y copie confidencial >.<"; con el ";, no vallan a pensar q asi esta en mi codigo xD... xq eso funciona perfecto.. en si la pagina funciona bien excepto el mensaje que les dije... q m estresa u.u

Por sebas_burgos

15 de clabLevel



Genero:Masculino  

Desarrollador en Papaya.pe

msie8
Citar            
MensajeEscrito el 10 Jun 2009 03:47 am
zorro chucho :-) cambia lo que te dije porq ya lo probe y me funciono es que el ob_start lo que hace es manda unas cabeceras y tu no puedes mandar nada antes de una sesion no se pero a mi me funcionno

http://www.lfree.com/Area51/Tam/tam.php

mira que no sale ningun error, pero tienes que cerrar el ob porq sino no te va a funcionar saludos

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 10 Jun 2009 03:48 am
Prueba removiendo el método "ob_start()" y colocando headet("Location: login.php") para redireccionar a la pagina de login

Código PHP :

<?php 
session_start(); 
if(!isset($_SESSION['usuario'])) 
{ 
   header("Location: login.php") ; 
} 
else
{
    // còdigo
}
?>

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Jun 2009 04:34 am
es q si el hace eso esta bn le funcionara pero si por el contrario lo deja debera revisar que el ob_start le manda unas cabezeras y por eso es que ocurre el error, es mas tu codigo no deberia llevar ob_start porque no lo necesitas ese lo deberias usar en el codigo normal de html hay si lo deberias usar el error te sale cuando tratas de redireccionar prueba colocando el ob_end_flush antes de el redireccionamiento a ver que te sale

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 12 Jun 2009 10:45 pm
eehmmm no nada :/...
alucina que tuve un sueño donde se arreglaba el problema xD...
aun sigo probrando todo lo que se me ocurre... si llego a algo les paso la voz
igual ustedes si alguien le ha pasado algo parecido porfa comentelo pa ver si me funciona aun sigue en pie mi propuesta d q el que lo solucione va a ser mi idolo xD

saludos!!

Por sebas_burgos

15 de clabLevel



Genero:Masculino  

Desarrollador en Papaya.pe

firefox
Citar            
MensajeEscrito el 13 Jun 2009 05:39 am
yo lo que se es que el ob_start no se las lleva bn con las sesiones de todos modos seguiremos averiguando pero estoy casi seguro que hay una forma

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 13 Jun 2009 05:41 am
otra pregunta para que quieres comprimir un panel de control ? es necesario hacer eso ?

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 13 Jun 2009 07:00 pm
mm no es un Cpanel, el scipt funciona algo asi... si un usuario entra a index.php sin haber hecho login entonces el sistema verifica mediante el if(!isset($_SESSION['correo'])) y te redirecciona al login.php para que hagas login.. y si t kieres pasar al index d nuevo sin hacer login d nuevo t regresa por malcriado xD... y si cumples con el login, entonces si te muestra la pagina del index
osea no es un cpanel sino un simple sistema de q si no haces login no puedes ver las demas paginas (excepto el de registro y el de olvide mi pass)

Por sebas_burgos

15 de clabLevel



Genero:Masculino  

Desarrollador en Papaya.pe

msie8
Citar            
MensajeEscrito el 13 Jun 2009 08:25 pm
entonces no uses ob_start no es necesario

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 14 Jun 2009 01:11 am
ya encontre la solucion xD
Se me ocurrio subir la web a un servidor para ver como se comportaba, y raramente no me salia el mensaje, es ahi donde recorde un post que lei mientras buscaba la solucion. Éste decia que exisitia una opcion en el XAMPP para activar los headers, lamentablemente no recuerdo ese post, no le tome importancia pero si lo encuentro lo posteo.

Gracias talcual por apoyarme xD
y disculpen por hacerlos perder el tiempo xD


atte.
sebas_burgos :p

Por sebas_burgos

15 de clabLevel



Genero:Masculino  

Desarrollador en Papaya.pe

msie8
Citar            
MensajeEscrito el 14 Jun 2009 01:57 am
tranquilo sebas , pero desde un principio nos hubieses dicho que estabas en local hubiese sido menos tedioso jajaaj saludos

Por talcual

686 de clabLevel



 

Colombia

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.