entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

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

me explico en localhost funciona bien el problema surge al subirlo a algun host aparece lo siguiente

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /storage/ssd3/893/822893/public_html/index.php:33) in /storage/ssd3/893/822893/public_html/php/login.php on line 16

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /storage/ssd3/893/822893/public_html/index.php:33) in /storage/ssd3/893/822893/public_html/php/login.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at /storage/ssd3/893/822893/public_html/index.php:33) in /storage/ssd3/893/822893/public_html/php/login.php on line 20

este es mi login

<?php

    $correo=$_POST['correo'];
    $clave=md5($_POST['clave']);
    require_once('Conexion.php');
    $conn = Conectar();

    $stmt = $conn->prepare("SELECT  id_usuario, nombre, apellido, correo, p.id_perfil, perfil FROM usuario u INNER JOIN perfil p ON p.id_perfil=u.id_perfil WHERE u.correo=:correo AND u.clave=:clave");
    $stmt->bindParam(':correo',$correo);
    $stmt->bindParam(':clave',$clave);
    $stmt->execute();

    if($stmt->rowCount()==1){
        session_start();
        $fila=$stmt->fetch();
        $_SESSION['idperfil']=$fila['id_perfil'];
        if($fila['id_perfil']==1)
            {header("Location: administrador/index.php");}
        if($fila['id_perfil']==2)
            {header("Location: aprendiz/index.php");}
        if($fila['id_perfil']==3)
            {header("Location: root/index.php");}
    }
    else{
         echo "<font color='red'>Datos No Validos</font>";
    }
?>  

el index

<!DOCTYPE html>
<html lang="es">

<head>

<link href="/css/bootstrap.css" rel="stylesheet">
    <meta charset="UTF-8">
    <title>Inicio de sesion</title>
</head>
<body background="img/texture.jpg">

<div class="groupLogin">
    <form action="" method="POST">
        <label><font color="red">Correo</font></label>
        <input type="email" name="correo" placeholder="Ingrese Correo" required="">
        <br>
        <label><font color="red">Clave</font></label>
        <input type="password" name="clave" placeholder="Ingrese Clave" required="">
        <br>
        <center>
        <input type="submit" value="Ingresar">
        </center>
    </form>

    <div>

    <?php
        if(isset($_POST['correo'])&&isset($_POST['clave'])){
            require_once "php/Conexion.php";
            require_once "php/login.php";
        }
    ?>

</body>

</html>
<footer>
<?php
include('footer.php');
?>
</footer>

seguridad

<?php
    session_start();
    if(!isset($_SESSION['idperfil'])){
        header("Location: ../index.php");
    }

cerrar sesion

<?php
require_once('php/Conexion.php');
    session_start();
    session_unset();
    session_destroy();
    header("Location: index.php");

no se donde esta el error yo veo todo normal habia visto por hay que el session_start debe estar al inicio del codigo despues de la etiqueta de php pero lo puse hay y sigue igual y no se que nmas sera

1 Respuesta

3votos

magarzon Puntos30650

session_start() debe estar al principio del todo, incluso antes que cualquier HTML. No vale con ponerlo solo al principio de tu PHP. De hecho no puede haber ni una línea en blanco después de la línea de <?php

También solo puede ser llamado una vez.

El motivo por el que en tu localhost funciona y en tu servidor no seguramente sea por la configuración de output_buffering, en tu php.ini estará puesta a ON, lo que significa que PHP no envía inmediatamente datos si no que los mete en un buffer, y en el servidor a off

0voto

zenosama comentado

me puedes dar un ejemplo con mi login la verdad soy novato en esto y puse el
session start despues de la etiqueta php y quite los espacios en blanco pero seguia marcando error y no se que mas pueda ser y muchas gracias por tu atencion amigo

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta