Problema a setear cookies

  • Autor Autor Lopezito
  • Fecha de inicio Fecha de inicio
Lopezito

Lopezito

Zeta
Diseñador
Verificación en dos pasos activada
Verificado por Whatsapp
Buenas gente.
Estoy tratando de crear un login, pero al logearme me salta el siguiente error:

Insertar CODE, HTML o PHP:
Warning: Cannot modify header information - headers already sent by (header.php:6) in file.php on line 53

Warning: Cannot modify header information - headers already sent by (header.php:6) in file.php on line 54

La parte de código vendría a ser:

PHP:
    if($verif){ 
        if (isset($_POST['recuerdame'])) {
        $tiempo = time()+31536000;
            setcookie('nickclasi25', $_POST['nick'], $tiempo);
            setcookie('passclasi25', md5($_POST['password']), $tiempo);
        } else {
            setcookie('nickclasi25', $_POST['nick'], false);
            setcookie('passclasi25', md5($_POST['password']), false);
        }
    } else {
        echo '<div class="error">El usuario y la contraseña no coinciden</div>';
    }

Las lineas de error son las setcookie();
¿Qué es lo que estoy haciendo mal?
Saludos.
 
Pon arriba de todo un

ob_start();


Y al final de todo

ob_end_flush();

Más info en php.net
 
Buenas gente.
Estoy tratando de crear un login, pero al logearme me salta el siguiente error:

Insertar CODE, HTML o PHP:
Warning: Cannot modify header information - headers already sent by (header.php:6) in file.php on line 53

Warning: Cannot modify header information - headers already sent by (header.php:6) in file.php on line 54

La parte de código vendría a ser:

PHP:
    if($verif){ 
        if (isset($_POST['recuerdame'])) {
        $tiempo = time()+31536000;
            setcookie('nickclasi25', $_POST['nick'], $tiempo);
            setcookie('passclasi25', md5($_POST['password']), $tiempo);
        } else {
            setcookie('nickclasi25', $_POST['nick'], false);
            setcookie('passclasi25', md5($_POST['password']), false);
        }
    } else {
        echo '<div class="error">El usuario y la contraseña no coinciden</div>';
    }

Las lineas de error son las setcookie();
¿Qué es lo que estoy haciendo mal?
Saludos.

el problema es que no podes setear cookies si ya enviaste HTML... el seteo de cookies se hace antes de enviar cualkier code html.
 
Gracias.
Mil gracias :drunk:

A ver, eso funciona, pero el problema es el que dice [MENTION=24748]Click[/MENTION]ow

Con ob_start y ob_end_flush lo que haces es evitar enviar el html mientras se ejecuta (lo almacenas en un buffer) y soltarlo al final, por lo que el código funciona. Pero deberías buscar donde está esa salida de datos, porque te puede dar más problemas.
 
[MENTION=9679]cicklow[/MENTION] y [MENTION=28190]ecoal95[/MENTION]

No entendí como debería de ir, mi código de login:

login.php

PHP:
<?php
if($_GET['submit'] == 'true'){
if(isset($_POST['nick']) && isset($_POST['password'])){
global $url;
    conmysql();
    $verif = mysql_query("SELECT * FROM usuarios WHERE nick='".htmlentities($_POST['nick'])."' and password='".md5($_POST['password'])."'");
    if($verif){ 
        if (isset($_POST['recuerdame'])) {
        $tiempo = time()+31536000;
            setcookie('nickclasi25', $_POST['nick'], $tiempo);
            setcookie('passclasi25', md5($_POST['password']), $tiempo);
        } else {
            setcookie('nick', $_POST['nick'], false);
            setcookie('passclasi25', md5($_POST['password']), false);
        }
        header('Location: '.$url);
    } else {
        echo '<div class="error">El usuario y la contraseña no coinciden</div>';
    }
    descmysql();
    
} else {
    echo '<div class="error">Complete todo el formulario.</div>';
}
}
?>
<form action="<?php echo url(''); ?>?action=ingresar&submit=true" method="POST" class="regform">
<p>Nick: <input type="text" name="nick" required="required" /></p>
<p>Contraseña: <input type="password" name="password" required="required" /></p>
<p style="float: left;margin-left: 155px;">Recuerdame: <input type="checkbox" name="recuerdame" /></p>
<input type="submit" value="Conectarse" />
</form>
 
[MENTION=9679]cicklow[/MENTION] y [MENTION=28190]ecoal95[/MENTION]

No entendí como debería de ir, mi código de login:

login.php
vos aca nos mostras el codigo completo o falta? porque a simple vista no tiene que darte error.
 
vos aca nos mostras el codigo completo o falta? porque a simple vista no tiene que darte error.

Emm es el código de login.php
Ya que tengo separado las cosas, pero este es mi código donde incluyo ese código:

PHP:
<?php
ob_start();
get_header();
?>
<section class="left">
<?php
if($_GET['action'] == 'registrarse'){
include 'reg.php';
} else if($_GET['action'] == 'ingresar' && !isset($_COOKIE['nickclasi25'])){
include 'login.php';
} else if($_GET['action'] == 'post' && isset($_GET['idpost'])){
include 'post.php';
} else {
include 'loop.php';
}
?>
</section>
<aside class="sidebar">
</aside>
<?php
get_footer();
ob_end_flush();
?>

Además, como borro las cookies?
Saludos.
 
Emm es el código de login.php
Ya que tengo separado las cosas, pero este es mi código donde incluyo ese código:

PHP:
<?php
ob_start();
get_header();
?>
<section class="left">
<?php
if($_GET['action'] == 'registrarse'){
include 'reg.php';
} else if($_GET['action'] == 'ingresar' && !isset($_COOKIE['nickclasi25'])){
include 'login.php';
} else if($_GET['action'] == 'post' && isset($_GET['idpost'])){
include 'post.php';
} else {
include 'loop.php';
}
?>
</section>
<aside class="sidebar">
</aside>
<?php
get_footer();
ob_end_flush();
?>

Además, como borro las cookies?
Saludos.

pues bueno a simple vista ya metiste html
Insertar CODE, HTML o PHP:
<section class="left">

para eliminar la cookie es:
PHP:
setcookie('nickclasi25', $_POST['nick'], -$tiempo);
 
pues bueno a simple vista ya metiste html
Insertar CODE, HTML o PHP:
<section class="left">

para eliminar la cookie es:
PHP:
setcookie('nickclasi25', $_POST['nick'], -$tiempo);

Pero si quito la sección quedaría fuera de lugar los formularios, debería incluir en otro archivo el inicio de la sección, por ejemplo, en el archivo de la cabecera?
 
Pero si quito la sección quedaría fuera de lugar los formularios, debería incluir en otro archivo el inicio de la sección, por ejemplo, en el archivo de la cabecera?

podrias verificar y setear las cookies en el header arriba del todo... o redireccionar a un login.php y ese file solo tiene PHP. y tmb creas un logout.php con la eliminacion de las cookies.
en el login.php si los datos estan bien, seteas las cookies y dsp redireccionas a donde kieras. si dio mal los datos redireccionas a donde pedis el login + un aviso. ejemplo file.php?error=login
tons
PHP:
<?php
if($_GET['error']=="login"){
echo 'tus datos estan mal!';
}
?>
 
podrias verificar y setear las cookies en el header arriba del todo... o redireccionar a un login.php y ese file solo tiene PHP. y tmb creas un logout.php con la eliminacion de las cookies.
en el login.php si los datos estan bien, seteas las cookies y dsp redireccionas a donde kieras. si dio mal los datos redireccionas a donde pedis el login + un aviso. ejemplo file.php?error=login
tons
PHP:
<?php
if($_GET['error']=="login"){
echo 'tus datos estan mal!';
}
?>

Ok, el código un poco más separado :drunk:
Gracias por su atención.
Saludos.🙄
 
Atrás
Arriba