Error inicio de sesión con php

Mira en hace un tiempo me ayudaste a solucionar un problema
que tuve. Esta vez recurro a ti porque estoy haciendo una página muy sencilla diría
que la única gracia que tiene es que es auto administrable y que el inicio de
la sesión administradora se hace en la página no está protegida con usuario y
contraseña desde el hosting.
El asunto es que la página funciona perfectamente bien en
LOCAL pero una vez en el hosting salta con un montón de errores. Ni siquiera funciona
el login.
La realice con el dreamweaver y en opciones de servidor le
puse restringir acceso para que no se pueda saltar de una hoja a otra si no está
el sesión_star con un valor. Y me agrego un montón de código y sinceramente me perdí
en el, pero como funcionaba bien en local seguí trabajando.
Mira el error que da en el hosting es este:

Warning: session_start() [function.session-start]: Cannot send session cookie -
headers already sent by (output started at /home/ proyecto /public_html/blog/Connections/blog.php:12)
in /home/proyecto/public_html/blog/administración/index.php on line 5
Warning: session_start() [function.session-start]: Cannot send session cache limiter
- headers already sent (output started at /home/ proyecto /public_html/blog/Connections/blog.php:12)
in /home/ proyecto /public_html/blog/administración/index.php on line 5

¿Se te ocurre alguna manera de solucionarlo?

1 respuesta

Respuesta
-1

Hay una condición para usar la función session_start(). Tiene que ser la primera línea de código que tiene que ser ejecutada en tu script.

Inclusive si haces un include o un require, estos archivos no pueden tener otro session_start incluido porque generarán el mismo error.

La razón de que en tu servidor local no aparezcan los errores es porque tienes diferentes configuraciones en tu archivo php.ini. Valida que en tu ambiente local también despliegue todos los tipos de errores para que puedas hacer un código efectivo.

Ultima recomendación... Dreamweaver no sabe programar php, no le pidas que te genere bloques ya que siempre hace mucho para poco.

Si es cierto lo que dices respecto a php en dreamweaver. Estoy en la transición para votar definitivamente dreamweaver pero estas cosas aun no las manejo bien como para escribirlas a mano.

El session_start claro que lo tengo en la primera linea del código y no lo llamo desde includes.

Pero la verdad es que no entiendo bien el mensaje de error?, dice que esta definida dos veces el session_start o no

Saludos

Lo que dice es que las cabeceras ya han sido enviadas... Session start tiene que ejecutarse antes del envío de estas cabeceras. O sea, tiene que ser lo primero que se tiene que ejecutar.

¿
<?php
session_start();
//... más codigo

yo lo tengo así.

<?php require_once('../Connections/pagina.php'); ?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
}

?>

Como te comenté session start tiene que estar antes que cualquier cosa

¿
<?php
session_start();
require_once('../Connections/pagina.php');
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
}
?>

Hola amigo. mira estuve corrigiendo el código como me comentaste la otra vez (lo del session_start) y otras cosas que encontré mal yo mismo. Subí la nueva web a hosting y va todo bien solamente tengo un problema en el botón de desconectar usuario que esta en un include. Entonces cuando le doy a cerrar sesión me saca el siguiente error.

Warning: Cannot modify header information - headers already sent
by (output started at
/home/hola/public_html/blog/administración/base.php:57) in /home/hola/public_html/blog/administración/includes/sidebar.php on line 24

Creo que esto sucede por que lo estoy ejecutando desde el include (creo)

te muestro lo que dice el archivo sidebar.php por que aquí esta el error en la linea 24 +-

<?php
//initialize the session
if (!isset($_SESSION)) {
 session_start();
}
// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
 $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
 //to fully log out a visitor we need to clear the session varialbles
 $_SESSION['MM_Username'] = NULL;
 $_SESSION['MM_UserGroup'] = NULL;
 $_SESSION['PrevUrl'] = NULL;
 unset($_SESSION['MM_Username']);
 unset($_SESSION['MM_UserGroup']);
 unset($_SESSION['PrevUrl']);
 $logoutGoTo = "index.php";
 if ($logoutGoTo) {
 header("Location: $logoutGoTo");
 exit;
 }
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<ul class="nav">
 <li><a href="insertar-slider.php">Insertar slider</a></li>
 <li><a href="insertar-publicacion.php">Insertar publicac&iacute;on</a></li>
 <li><a href="lista-publicaciones.php">Administrar publicaciones</a></li>
 <li><a href="lista-categorias.php">Lista de categorías</a></li>
 <li><a href="agregar-categorias.php">Categorías</a></li>
 <li><a href="<?php echo $logoutAction ?>">Cerrar sesión</a></li>
 </ul>

¿Que sera lo que tiene de mal la linea 24?

Saludos amigo y muchas gracias.

Estas repitiendo el error que te había dicho anteriormente

//initialize the session
if (!isset($_SESSION)) {
 session_start();
}

Eso no corresponde.

Ahora... si el archivo base.php ya hace un session_start() el archivo sidebar.php no puede tener la misma función activada. Tienes que poner atención a eso ya que te repetirá el problema si no sigues las instrucciones.

Tienes que tener claridad en lo que estas haciendo, para que mas que pedirle a dreamweaver que te desarrolle una aplicación, tu puedas hacer tu sistema a conciencia y eso ayudará a que puedas solucionar tus problemas de manera ágil.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas