Sarah Hamed
Sarah Hamed

Reputation: 129

Cookie not being set

Could you please help me? My website does not set the following simple cookie. Although some other login scripts does but this one does not work. Thanks

test.php

...

<form action="test2.php" method="post">
        Email: <br />
        <input type="email" name="email" value=""/> <br />
        <input type="submit" name="submit" value="Next"/> 
</form>

...

test2.php

<?php ob_start(); ?>

<?php
// call the header of the page
require('header.html');

// connect to database
require "connect.php";
?>

<?php
    $email = $_POST['email'];

    // set cookie
    $one_hour = time() + 3600;
    $set = setcookie(user_email, $email, $one_hour);

    if($set == TRUE) {
        print '<p> Cookie set</p>';
    } else {
        print '<p> Cookie not set</p>';
    }

// call footer of the page
require('footer.html');
?>

<?php ob_flush(); ?>

After running the above scripts, I get this error:

Warning: Cannot modify header information - headers already sent by (output started at /websites/public_html/test2.php:1) in /websites/public_html/test2.php on line 16

Cookie not set

Upvotes: 0

Views: 552

Answers (2)

mack
mack

Reputation: 1828

just change above code in following way and try, put ob_start() after require()

<?php
require "connect.php";
require('header.html');
?>
<?php ob_start(); ?>

Upvotes: 2

David
David

Reputation: 219087

You're sending content to the output buffer before you need to:

<?php ob_start(); ?>
  <--- right here
<?php
// call the header of the page
require('header.html');

// connect to database
require "connect.php";
?>
  <--- and right here
<?php
    $email = $_POST['email'];

You should get rid of that unnecessary whitespace in the output so you can conduct your server-side processing (including header modification) before building output.

Ideally, you don't want to mix the two. The server-side processing should occur before the output is built, then the output would be built using the results of the processing and sent to the client.

Upvotes: -1

Related Questions