Foros del Web » Programando para Internet » PHP »

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

Estas en el tema de Warning: session_start() [function.session-start]: Cannot send session cache limiter en el foro de PHP en Foros del Web. Hola a todos :D Después de leer infinidad de soluciones posibles y de intentar con cada una de las posibles soluciones y desafortunadamente no encontrar ...
  #1 (permalink)  
Antiguo 30/12/2009, 01:08
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Warning: session_start() [function.session-start]: Cannot send session cache limiter

Hola a todos :D

Después de leer infinidad de soluciones posibles y de intentar con cada una de las posibles soluciones y desafortunadamente no encontrar solución posible solicito su ayuda.

El problema es el siguiente:

Cuando inicio sesión en mi aplicación ya en el servidor 'verdadero' obtengo el siguiente error y después de éste el contenido de la página:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/elhadiya/public_html/Bookcase/aplicacion/home/index.php:1) in /home/elhadiya/public_html/Bookcase/seguridad.php on line 7

Les dejo mi código del archivo seguridad.php

Código PHP:
<?php
// Cambiamos la configuracion del php.ini respecto a propagacion de la sesion en cookies
ini_set("session.use_only_cookies","1");
ini_set("session.use_trans_sid","0");
// Iniciamos sesion.
session_name("sesionIniciada");
session_start();
// Cambiamos el parametro de duracion a la cookie de la sesion
session_set_cookie_params(0"/"$HTTP_SERVER_VARS["HTTP_HOST"], 0);
// Comprobamos que el usuario este autentificado.
if ($_SESSION["autentificado"] != "SI") {
    
// si no esta logueado lo envio a la pagina de acceso
    
header("Location: ../../index.php");
    exit();
} else {
    
// calculamos el tiempo transcurrido desde su ultimo acceso
    
$fechaGuardada $_SESSION["ultimoAcceso"];
    
$fechaActual date("Y-n-j H:i:s");
    
$tiempoTranscurrido = (strtotime($fechaActual) - strtotime($fechaGuardada));
    
// comparamos el tiempo transcurrido
    
if ($tiempoTranscurrido >= 300) {
        
// si pasaron 5 minutos o mas de inactividad
        // elimino todas las variables de sesion
        
session_unset();
        
session_destroy();
        
header("Location: ../../index.php");
    }else {
        
// actualizamos la fecha de la sesion
        
$_SESSION["ultimoAcceso"] = $fechaActual;
    }
}
?>
Y parte del código donde obtengo ese error (index.php):
Código HTML:
<?php include("../../seguridad.php"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
También les dejo el archivo donde hago la autentificación de los usuarios:
Código PHP:
<?php
include ("conexion.php");
if (isset(
$_POST['acceso'])) {
    
// Comprobacion del envio del nombre de usuario y password
    
$username $_POST['user'];
    
$password $_POST['password'];
            
    
// Buscamos al usuario en la BD para validar los datos.
    
$query "SELECT * FROM usuarios WHERE username = '".$username."' && password = '".$password."'";
            
    
$ejecucion_consulta mysql_query($query,$conexion) or die(mysql_error());
    
$usuarios_encontrados mysql_num_rows($ejecucion_consulta);
    
$rowsUsuarios mysql_fetch_array($ejecucion_consulta);    
    
    
// Cambiamos la configuración del php.ini respecto a propagación de la sesión en cookies
    
ini_set("session.use_only_cookies","1");
    
ini_set("session.use_trans_sid","0");
    
// Si el usuario y contraseña coinciden, debe regresar al menos un usuario.        
    
if ($usuarios_encontrados 0) {        
            
            
// Compruebo que tipo de usuario es y lo redirecciono
            
$tipo_usuario $rowsUsuarios['tipo'];
            if (
$tipo_usuario == 'administrador') {
                
// Asigno un nombre a la sesion para guardar diferentes datos
                
session_name("sesionIniciada");
                
session_start();
                
// Cambiamos el parámetro de duración a la cookie de la sesión
                
session_set_cookie_params(0"/"$HTTP_SERVER_VARS["HTTP_HOST"], 0);
                
$_SESSION["autentificado"]= "SI";
                
// Defino la fecha y hora de inicio de sesión en formato aaaa-mm-dd hh:mm:ss
                
$_SESSION["ultimoAcceso"]=date("Y-n-j H:i:s");
                
// Identifico el username del usuario
                
$_SESSION['nombre'] = $rowsUsuarios['nombre'];
                
// Redirecciono a la parte privada del sistema con todos los permisos.
                
header("Location: aplicacion/home/index.php");
            } else if (
$tipo_usuario == 'usuario') {
                
// Asigno un nombre a la sesion para guardar diferentes datos
                
session_name("sesionIniciada");
                
session_start();
                
$_SESSION["autentificado"]= "SI";
                
// Defino la fecha y hora de inicio de sesión en formato aaaa-mm-dd hh:mm:ss
                
$_SESSION["ultimoAcceso"]=date("Y-n-j H:i:s");
                
// Identifico el username del usuario
                
$_SESSION['nombre'] = $rowsUsuarios['nombre'];
                
// Redirecciono a la parte privada del sistema con permisos de lectura únicamente.
                
header("Location: consulta/home/index.php");
            }
    }else {
        
// Si no existe, le redirecciono a la página de inicio.
        
header("Location: index.php?datosinvalidos=si");
    }
    
mysql_close($conexion);
} else {
    
// Si no envio nada, le redirecciono a la página de inicio.
        
header("Location: index.php");
}
?>
Ojalá y me puedan orientar porque en mi servidor local no me muestra dicho error y lo más curioso es que uso el mismo archivo de seguridad para las demás páginas de la aplicación.

Ya he probado lo de espacios en blanco, codificación ANSII y nada.
  #2 (permalink)  
Antiguo 30/12/2009, 01:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Warning: session_start() [function.session-start]: Cannot send session cac

Cita:
Iniciado por mayver Ver Mensaje
[...] Después de leer infinidad de soluciones posibles y de intentar con cada una de las posibles soluciones y desafortunadamente no encontrar solución posible [...]
te sugiero leer el siguiente tema...
http://www.forosdelweb.com/f18/probl...eaders-765077/

tal ves te sirva...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/12/2009, 01:22
Avatar de zaetoner  
Fecha de Ingreso: noviembre-2007
Ubicación: La ciudad de México
Mensajes: 607
Antigüedad: 16 años, 5 meses
Puntos: 30
Respuesta: Warning: session_start() [function.session-start]: Cannot send session cac

pusiste codigo antes de iniciar session, esto no es correcto, cambia session_start() a la primera linea del archivo
__________________
...
  #4 (permalink)  
Antiguo 30/12/2009, 08:43
 
Fecha de Ingreso: diciembre-2009
Mensajes: 52
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Warning: session_start() [function.session-start]: Cannot send session cac

fijate bien en el archivo, a veces ocurre por q ahi un punto delante de tu codigo, eso fue loq ue me paso
  #5 (permalink)  
Antiguo 30/12/2009, 09:03
 
Fecha de Ingreso: diciembre-2009
Mensajes: 72
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Warning: session_start() [function.session-start]: Cannot send session cac

prueba con poner el session_start() en la primera linea antes que cualquier otra cosa como dice @zaetoner
  #6 (permalink)  
Antiguo 30/12/2009, 09:38
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Warning: session_start() [function.session-start]: Cannot send session cac

Cita:
Iniciado por zaetoner Ver Mensaje
pusiste codigo antes de iniciar session, esto no es correcto, cambia session_start() a la primera linea del archivo
FFFFFFAAAAAAAAAAALLLLLLLLLLLLSSSSSSSSSSSSSOOOOOOOO OOOO

Puede poner 23094809347508371928347029384721398471239481239418 23 lineas de codigo antes de iniciar la sesion si quiere, y es correcto y no marcara error siempre y cuando no envie nada al navegador

Revisa el enlace que dejo pateketrueke
  #7 (permalink)  
Antiguo 30/12/2009, 20:58
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Respuesta: Warning: session_start() [function.session-start]: Cannot send session cac

Muchas gracias a todos por responder.

Después de leer y probar las soluciones brindades en el post que me recomendaron no he podido resolver el problema. Es importante mencionar que no quiero usar redireccionamientos con Javascript, sino quiero saber que está mal y cómo solucionarlo. Ojalá y alguien tenga alguna pista de dónde puede estar el error.

Para los que me dicen que cambie session_start() al inicio, lo he probado, pero no funciona. Las líneas de código que tengo antes de dicha declaración no interfieren con el código.

NOTA: este error solo se presenta en ésta pagina, en las demás uso include para llamar a mi archivo de seguridad de la misma manera, pero no me aparece ningún error.
  #8 (permalink)  
Antiguo 31/12/2009, 00:30
Avatar de zaetoner  
Fecha de Ingreso: noviembre-2007
Ubicación: La ciudad de México
Mensajes: 607
Antigüedad: 16 años, 5 meses
Puntos: 30
Respuesta: Warning: session_start() [function.session-start]: Cannot send session cac

darkasecas te agradesco la correccion.

mira probe tu codigo de la primera seccion que pusiste con la intencion de ver el error, sin embargo tan solo ejecutarlo me redirecciono al index.php(osea que almenos el primer script funciona)

estube navegando un rato buscando tu error y me encontre con muchisimas soluciones unas creibles y otras que en mi parecer son falsas pero de todos modos te las paso

[ http://forum.spip.org/es_173445.html ]
HOLAss estos mensajes que ves puden ser por diferentes causas previamente expuestas por otros asistentes al foro. En mi opinión y espero esto sea de utilidad para alguíen a quien le pudo ocurrir..., puede ser por la Instalación previa de Algún Software que utilice los mismos archivos de Configuración del ’core’ de tu aplicativo WEB (php.ini y/o httpd.conf). Ocasionalmente ocurre cuando se instalan varios programas a la vez basados unos en otros P.ej: ZendOptimizer-3.0.1-Windows-i386..., para la encriptación del código PHP en nuestro servidor final. Solución: Desistalarlo y modificar posteriormente el archivo php.ini para dejar la variable ’register_globals=on’.


[ http://forum.spip.org/es_173445.html ]
Hola tienen en gran parte razon... sobre este problema pero tambien les comento que es problema en como esta grabado el archivo o sea la codificacion del archivo si esta en : UTF-8 tienen que cambiar a ANSII para que este warning de PHP ya no aparesca... 1.- abran con cualquier editor de texto "Eje: NotePad" su archivo.php 2.- luego procedan a grabar como... 3.- en la opcion de codificacion Seleccionen "ANSII" 4.- y click Guardar 5.- Problema resuelto

hacer esto si no les funciona los pasos que indican antes...

saludos!!!


[ http://forum.spip.org/es_173445.html ]!!!NO!!!! te la recomiendo, aunque funcione!!!
La solucion que funciona 100%, es la siguiente entra en php.ini de la carpeta del apache o la que sea tu motor y busca la linea // error_reporting = E_ALL // y cambiala por // error_reporting = E_ALL & E_NOTICE & E_WARNING //

Con esto solucionan todos los warning de variables no declaradas y todo, a no se olviden de reiniciar el motor.

PD las doble barra no van son para que se entienda.

[ http://forum.spip.org/es_173445.html ]
Bueno muchachos voy tratar de explicarme es la primera vez pero en fin quizas le sirva a alguien, el asunto es que me salia el error "Warning: Cannot send session cache limiter" y bueno probe de todo y tambien me deseperaba pero como dicen los amigos el error es muy variable pero lo mas probable que tiene que ver con los espacios en blanco. Mostrando el mensaje:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/ay0110/public_html/fiesta/connections/fest.php:11) in /home/ay0110/public_html/fiesta/login_handler.php on line 80

Pense que el problema era la linea 80 del archivo login_handler.php (donde justo aparece session_start();) dejandome llevar por el titulo de mi error "Warning: Cannot send session cache limiter" pero analizando mi codigo de error decia tambien fest.php:13 donde fest.php es mi archivo de conexion. fest.php

1 <?php
2 $hostname_fest = "localhost";
3 $database_fest = "ay0110_tradingk";
4 $username_fest = "ay0110_jc";
5 $password_fest = "bienvenido";
6 $fest = mysql_pconnect($hostname_fest,
7 $username_fest,...
8 $username_fest, ..
9 ?> 10 Blanco aqui 11 Blanco aqui

Como se puede observar los espacios en blanco (10 y 11) estaban en el lugar menos esperado (10 abajo del nueve,11 abajo del 10 aqui no se muestra bien). Los borre y listo aseguir trabajando espero les de una idea a aquellos que aun no pueden arreglar el error. Saludos.


[http://forum.spip.org/es_173445.html ]
¡ Resuelto !

Les comparto que el mismo día que realicé mi post resolví el problema y lo comparto:

1. La cabecera del archivo debe quedar más o menos así si trabajan con el objeto SESSION: <?php session_start(); header('Content-Type: text/html; charset=UTF-8');?>

Aquí tu DOCTYPE...

< html> < head> < meta http-equiv="content-type" content="text/html; charset="utf-8">

2. Guardar el archivo con codificación UTF-8 pero SIN BOM.

3. Guarden en sus bases de datos todo con dicha codificación y ¡LISTO EL PAQUETE!

Lo anterior es INFALIBLE y para cualquier navegador conocido siempre y cuando TODO esté en UTF-8.

[ http://www.comunidadhosting.com/prog...eady-sent.html ]
El mensaje de error completo puede ser similar a este:

Warning: session_start(): Cannot send session cache limiter - headers already sent

Ver también:

Warning: Cannot modify header information - headers already sent by

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

Solución 1

Este error se presenta habitualmente porque en el script PHP existen espacios o caracteres extraños antes o después del código PHP.

Para solucionarlo, debe revisar que no existan espacios, saltos de línea o caracteres antes de:

<?

(donde comienza el script PHP)

Y que no existan también después de:

?>

(donde finaliza el script o archivo PHP)

Incluso esa etiqueta de cierre de código se puede omitir, no es necesaria.

Esto debe hacerse en el script que está generando el error. Sabrá cuál es pues el mensaje de advertencia menciona el script o archivo que está generando el error.

Solución 2

En algunas ocasiones el error puede aparecer porque la configuración de PHP en el servidor tiene activa (en On) la directiva display_errors

Al apagar (poner en Off) la directiva display_errors, el error puede desaparecer. Esta directiva se puede modificar mediante un archivo .htaccess o php.ini. Mediante .htaccess, se puede hacer poniendo una línea de este modo:

php_value display_errors "Off"

Ante alguna duda, lo más recomendable es pedir asistencia al proveedor de hosting o a la persona encargada de la administración del servidor o cuenta de hosting.

Solución 3

session_start() debe ser ejecutado antes de cualquier salida HTML porque envía headers HTTP al navegador. Pida a un desarrollador en PHP que edite el código para solucionarlo.

------------------------------

Espero no haber roto ninguna regla(ultimamente estoy ropiendolas todas!!)

son varias soluciones seguro alguna te funciona, te repito que probe tu script y me funciono
__________________
__________________
...

Última edición por zaetoner; 31/12/2009 a las 00:37
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 21:22.