reportingsjr Posted May 4, 2006 Share Posted May 4, 2006 I have session start() and I get this error:Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/html/login/index.php:14) in /var/www/html/login/index.php on line 36Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/html/login/index.php:14) in /var/www/html/login/index.php on line 36Im not sure why it does this and I have to have it!!! PLease help! Link to comment Share on other sites More sharing options...
Nakor Posted May 4, 2006 Share Posted May 4, 2006 Post your code. This typically means that you tried to do something else first, being as that cookies have to be sent first. You are probably getting this because the first line of your code is not session_start(). Link to comment Share on other sites More sharing options...
justsomeguy Posted May 4, 2006 Share Posted May 4, 2006 You need to start the session before you send any output. Session information goes in a header, and headers are the start of the page, so you can't send output to the browser and then try to send a header, the headers have already been sent.You need to move session_start to the top of the page, or at least before you send any output. You can also enable output buffering, and buffer the entire page and send it once execution is finished. Link to comment Share on other sites More sharing options...
reportingsjr Posted May 4, 2006 Author Share Posted May 4, 2006 Hmm, it still gives me the error, I put it before any of the coding except th <? of course...The coding is: <? session_start(); if(isset($_POST['name']) || isset($_POST['pwd'])){ if(empty($_POST['name'])){ die ("Please enter a username!"); } if(empty($_POST['pwd'])){ die ("Please enter a password!"); } $host = ""; $user = ""; $pass = ""; $db = ""; $connection = mysql_connect($host, $user, $pass) or die ("Sorry, couldnt connect!"); mysql_select_db($db) or die ("Sorry, couldnt select a database!"); $query = "SELECT * FROM `users` WHERE name = '" . $_POST['name'] . "' AND password = '" . $_POST['pwd'] . "'"; $result = mysql_query($query) or die ("Error in query: $query. " . mysql_error()); if (mysql_num_rows($result) == 1) { $_SESSION['login'] = 1; echo "succesfully logged in!"; if ($row[2] == "yes"){ $session['admin']; } if ($_POST['save'] == 1){ setcookie("username", $_POST['name'], time()+(84600*30)); setcookie("pwd", $_POST['pwd'], time()+(84600*30)); }else{ setcookie("username", NULL, mktime() - 3600); setcookie("pwd", NULL, mktime() - 3600); } }else{ echo "Wrong username and password, please go back and try again."; } mysql_free_result($result); mysql_close($connection); } ?> Thanks for the comments Link to comment Share on other sites More sharing options...
justsomeguy Posted May 4, 2006 Share Posted May 4, 2006 Make sure you do not have any spaces or blank lines before the <?. Anything outside of the <? (it should really be <?php) will be sent to the browser, including any whitespace like blank lines. Link to comment Share on other sites More sharing options...
reportingsjr Posted May 4, 2006 Author Share Posted May 4, 2006 what do you mean no spaces or anything before it? this is in the middle of the page!ohhh, I put it at the begining before <html> and it worked! ty, but now it says:Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/login/index.php:14) in /var/www/html/login/index.php on line 45Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/login/index.php:14) in /var/www/html/login/index.php on line 46.. All I did was put some variables into two cookies =\Ohh, its the same for cookies to, nvm! Link to comment Share on other sites More sharing options...
Nakor Posted May 4, 2006 Share Posted May 4, 2006 Haha...that's why. You can't have anything sent to the browser before session_start(). You need to put this in a PHP block at the verryyy beginning of the file.Edit:That means you are trying to send more headers at those locations. You have to send all of the headers at the beginning of the file. Link to comment Share on other sites More sharing options...
justsomeguy Posted May 4, 2006 Share Posted May 4, 2006 Yeah, cookies, sessions, all that type of stuff are all contained in headers. There is an HTTP header called set-cookie that specifies a cookie to save on the client. The session itself is actually just another cookie, which contains a session ID number that the PHP engine uses to look up all the info saved in the client's session. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now