PHP - Problemas de sessiones A session had already been started - ignoring session_start() in

 
Vista:
sin imagen de perfil

Problemas de sessiones A session had already been started - ignoring session_start() in

Publicado por alexi (1 intervención) el 16/01/2017 06:11:11
Tengo problemas al iniciar sesión en un proyecto, que estoy desarrollando y solo pasa cuando incluyo el header en el formulario del login.ya verifique las rutas y estan bien.
El proyecto funciona correctamente sin usar el header pero me quedo sin los estilos y fuentes que trae
Cuando ingreso mis datos en el formulario me valida los datos es decir si escribo mal el correo me lanza un mensaje que debo escribir bien mis datos,eso lo tengo personalizado, ademas si tengo incluido el header me valida pero no me redirige al panel de administracion y me muestra el error: Notice: A session had already been started - ignoring session_start() in C:\wamp64\www\boostrap\includes\login_action.php on line 28 junto con este Warning: Cannot modify header information - headers already sent by (output started at C:\wamp64\www\boostrap\includes\login_action.php:28) in C:\wamp64\www\boostrap\includes\login_action.php on line 34 luego de mostrarme el error vuelvo a enviar los datos y ya me redirige al panel de administracion.Esto no pasa cuando quito el header alguna ayuda idea??? de que hacer


header.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
session_start();
require('includes/conexion.php');
?>
<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>E.S.E Hospital Alcides Jiménez</title>
 
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <link rel="stylesheet" type="text/css" href="css/icons/font/flaticon.css">
    <link rel="stylesheet" href="css/icons/aweasone/css/font-awesome.min.css">
    <link rel="icon" href="img/logo.ico">
 
</head>
<body>

login.php

1
2
3
4
5
6
<?php
 
require('recursos/header.php');
require('recursos/menu.php');
require('includes/login_action.php');
?>

login_action.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
//Funcion de inicio de sesion en la web
function login(){
	if (isset($_POST['user']) && isset($_POST['password'])) {
		//si existen las dos condiciones guardo los datos en variables
		$user = htmlentities($_POST['user'],ENT_QUOTES);
		$pass = htmlentities($_POST['password'],ENT_QUOTES);
		$sha1_pass = sha1($pass);
 
		//verifico si los campos estan vacios 
		if ($_POST['user'] === '') {
			echo "<div class= 'alert'>Debe Ingresar el nombre de Usuario válido </div>";
		}elseif ($_POST['password'] === '') {
			echo "<div class='alert'>Debe ingresar la contraseña</div>";
		}else{
			$sql = "SELECT *FROM usuarios WHERE usuario ='$user' AND password = '$sha1_pass'";
			$query = mysqli_query(conexion(),$sql);
			$rows = mysqli_num_rows($query);
			if ($rows>0) {
				while ($i=mysqli_fetch_array($query)) {
							session_start();
							$_SESSION['login'] = 'si';
							$_SESSION['id'] = $i['id'];
							$_SESSION['email'] = $i['usuario'];
							$_SESSION['tipo'] = $i['id_tipo'];
						}
						header('Location:admin.php');
			}else{
				echo "<div class='alert'> El usuario o contraseña son incorrectos.</div>";
			}
		}
	}
}

salir.php

1
2
3
4
5
6
7
8
<?php
// Inicializar la sesión.
session_start();
 
// Finalmente, destruir la sesión.
session_destroy();
header('location: index.php');
?>

Repito solo pasa si incluyo el header y claramente debo modificar el login.php indicando session_start(); y un
require('includes/conexion.php'); pero me quedaria sin los estilos.
php
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problemas de sessiones A session had already been started - ignoring session_start() in

Publicado por xve (6935 intervenciones) el 16/01/2017 08:39:55
El error que te da, es que no puedes hacer un header("location:....") si ya has enviado código HTML al navegador

La manera, es cargar el header solo si se queda en la misma pantalla, si va a cambiar de pantalla no incluyas el header.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar