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;
}
}
?>
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"> <!--
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");
}
?>
Ya he probado lo de espacios en blanco, codificación ANSII y nada.