crochk Posted August 22, 2008 Share Posted August 22, 2008 I am trying to use About.com's login (http://php.about.com/od/finishedphp1/ss/php_login_code.htm) script on one of my sites. I have the registration page working, but when I try to log in and set the cookies, I get this error: Warning: Cannot modify header information - headers already sent by (output started at /www/110mb.com/c/h/a/t/n/o/t/e/chatnotes/htdocs/login/login2.php:3) in /www/110mb.com/c/h/a/t/n/o/t/e/chatnotes/htdocs/login/login2.php on line 76 Warning: Cannot modify header information - headers already sent by (output started at /www/110mb.com/c/h/a/t/n/o/t/e/chatnotes/htdocs/login/login2.php:3) in /www/110mb.com/c/h/a/t/n/o/t/e/chatnotes/htdocs/login/login2.php on line 77 You are now logged in. The code for the page is this: <head> <?php // Connects to your Database mysql_connect("localhost","username","password") or die(mysql_error()); mysql_select_db("databse") or die(mysql_error()); //Checks if there is a login cookie if(isset($_COOKIE['site_id'])) //if there is, it logs you in and directes you to the members page { $username = $_COOKIE['site_id']; $pass = $_COOKIE['site_key']; $check = mysql_query("SELECT * FROM login WHERE username = '$username'")or die(mysql_error()); while($info = mysql_fetch_array( $check )) { if ($pass != $info['password']) { } else { header("Location: adminarea.php"); } } } //if the login form is submitted if (isset($_POST['submit'])) { // if form has been submitted // makes sure they filled it in if(!$_POST['username'] | !$_POST['pass']) { die('You did not fill in a required field.'); } // checks it against the database if (!get_magic_quotes_gpc()) { $_POST['username'] = addslashes($_POST['username']); } $check = mysql_query("SELECT * FROM login WHERE username = '".$_POST['username']."'")or die(mysql_error()); //Gives error if user dosen't exist $check2 = mysql_num_rows($check); if ($check2 == 0) { die('That user does not exist in our database. <a href=registration.php>Click Here to Register</a>'); } while($info = mysql_fetch_array( $check )) { $_POST['pass'] = stripslashes($_POST['pass']); $info['password'] = stripslashes($info['password']); $_POST['pass'] = md5($_POST['pass']); //gives error if the password is wrong if ($_POST['pass'] != $info['password']) { die('Incorrect password, please try again.'); } else { // if login is ok then we add a cookie $_POST['username'] = stripslashes($_POST['username']); $hour = time() + 3600; $username = $_POST['username']; $password = $_POST['pass']; setcookie("site_id", $username, $hour); setcookie("site_key", $password, $hour); //then redirect them to the members area die('You are now logged in.'); } } } else { // if they are not logged in ?> <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> <table border="0"> <tr><td colspan=2><h1>Login</h1></td></tr> <tr><td>Username:</td><td> <input type="text" name="username" maxlength="40"> </td></tr> <tr><td>Password:</td><td> <input type="password" name="pass" maxlength="50"> </td></tr> <tr><td colspan="2" align="right"> <input type="submit" name="submit" value="Login"> </td></tr> </table> </form> <?php } ?> PLEASE HELP!!! Quote Link to comment Share on other sites More sharing options...
BlueSkyIS Posted August 22, 2008 Share Posted August 22, 2008 there must be NO html or anything else output before a header() call, including this: <head> Quote Link to comment Share on other sites More sharing options...
revraz Posted August 22, 2008 Share Posted August 22, 2008 Stickies are your friend http://www.phpfreaks.com/forums/index.php/topic,37442.0.html Quote Link to comment Share on other sites More sharing options...
crochk Posted August 22, 2008 Author Share Posted August 22, 2008 there must be NO html or anything else output before a header() call, including this: <head> Thanks for your reply, sadly it did not change the resulting errors. Quote Link to comment Share on other sites More sharing options...
DarkWater Posted August 22, 2008 Share Posted August 22, 2008 You removed the <head> tag and any and all white space before the opening PHP tag? This is why you're supposed to separate business logic and layout logic. *facepalm* Quote Link to comment Share on other sites More sharing options...
crochk Posted August 22, 2008 Author Share Posted August 22, 2008 This is the new code, and still errors: <?php // Connects to your Database mysql_connect("localhost","username","password") or die(mysql_error()); mysql_select_db("databse") or die(mysql_error()); //Checks if there is a login cookie if(isset($_COOKIE['site_id'])) //if there is, it logs you in and directes you to the members page { $username = $_COOKIE['site_id']; $pass = $_COOKIE['site_key']; $check = mysql_query("SELECT * FROM login WHERE username = '$username'")or die(mysql_error()); while($info = mysql_fetch_array( $check )) { if ($pass != $info['password']) { } else { header("Location: adminarea.php"); } } } //if the login form is submitted if (isset($_POST['submit'])) { // if form has been submitted // makes sure they filled it in if(!$_POST['username'] | !$_POST['pass']) { die('You did not fill in a required field.'); } // checks it against the database if (!get_magic_quotes_gpc()) { $_POST['username'] = addslashes($_POST['username']); } $check = mysql_query("SELECT * FROM login WHERE username = '".$_POST['username']."'")or die(mysql_error()); //Gives error if user dosen't exist $check2 = mysql_num_rows($check); if ($check2 == 0) { die('That user does not exist in our database. <a href=registration.php>Click Here to Register</a>'); } while($info = mysql_fetch_array( $check )) { $_POST['pass'] = stripslashes($_POST['pass']); $info['password'] = stripslashes($info['password']); $_POST['pass'] = md5($_POST['pass']); //gives error if the password is wrong if ($_POST['pass'] != $info['password']) { die('Incorrect password, please try again.'); } else { // if login is ok then we add a cookie $_POST['username'] = stripslashes($_POST['username']); $hour = time() + 3600; $username = $_POST['username']; $password = $_POST['pass']; setcookie("site_id", $username, $hour); setcookie("site_key", $password, $hour); //then redirect them to the members area die('You are now logged in.'); } } } else { // if they are not logged in ?> <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> <table border="0"> <tr><td colspan=2><h1>Login</h1></td></tr> <tr><td>Username:</td><td> <input type="text" name="username" maxlength="40"> </td></tr> <tr><td>Password:</td><td> <input type="password" name="pass" maxlength="50"> </td></tr> <tr><td colspan="2" align="right"> <input type="submit" name="submit" value="Login"> </td></tr> </table> </form> <?php } ?> Quote Link to comment Share on other sites More sharing options...
DarkWater Posted August 22, 2008 Share Posted August 22, 2008 Remove all whitespace. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.