tags:

views:

272

answers:

2

Hi, i've used a sample found on online and applied it to my code:

<?php
session_start();
if (isset($_REQUEST["email"]))
{
    $_SESSION["name"] = true;
    $host = $_SERVER["HTTP_HOST"];
    $path = dirname($_SERVER["PHP_SELF"]);
    $sid = session_name() . "=" . session_id();
    header("Location: index.php?$sid");
    exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml"&gt;
<head>
...
...
and rest of the html code

When I open this page, I got an error:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /data/server/user/directory/sub-directory/login.php:1) in /data/server/user/directory/sub-directory/login.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/server/user/directory/sub-directory/login.php:1) in /data/server/user/directory/sub-directory/login.php on line 2

I looked around to resolve this issue and saw few posts about this in this site also, but I just can't get a good grip on this...can't find the answer.

Please help.

Thanks.

A: 

Check for a space, newline, or any other characters before the <?php, Any output before session_start() will cause that error.

The error specifically states that the output is on line 1 of login.php, while session_start() is on line 2. Thus it's probably a space or some other character.

AlReece45
i did. that php script is the only script in this html file. i even tried by getting rid of those extra spaces in front of "$_SESSION", "$host", "$path", $sid", "header", and "exit;"...and it still didn't work.
tooepic
also, there's no space before or after <?php and no space before or after session_start();
tooepic
And, if you still find no remedy, you can see if maybe it's a Unicode BOM issue. Check the encoding settings your text editor is using, and select an encoding without BOM, if possible. here's a short explanation of this and other issues:http://bytes.com/topic/php/insights/876324-php-common-newbie-pitfalls-1-headers-already-sent
grossvogel
i'm using a simple text editor called notepad. how do i check this encoding settings...or is there such setting availability in notepad?
tooepic
A: 

NotePad is known to insert BOM in the beginning of the text file. When you save the file, please make sure you don't select Unicode or UTF-8 as encoding.

You can confirm if BOM is inserted by making a hex dump of the file. You can use this utility to do it,

http://www.richpasco.org/utilities/hexdump.html

If it doesn't start with 0x3C, you got BOM.

ZZ Coder
For all these years, i have never noticed about this encoding choice. I just found out and saved it as ANSI and I don't get this warning anymore. Thanks for helping this newbie out.
tooepic