Dears,

I am having the headers warning that is generated from my login script.


Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\tgaff\index.php:25) in C:\xampp\htdocs\tgaff\members.php on line 62

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\tgaff\index.php:25) in C:\xampp\htdocs\tgaff\members.php on line 63

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\tgaff\index.php:25) in C:\xampp\htdocs\tgaff\members.php on line 66

I tried the following

  1. ob_start() / ob_flush()
  2. checked the 1st and last line to see blank lines or strange characters
  3. changed the file type from UTF8 to ANSI

My website is divided into sections is separate files that are included in the main php file.

here is the index.php file:

<div id="templatemo_content">
    	<div id="templatemo_main_leftcol">
        	<div class="templatemo_leftcol_subcol">
            	<?php
                    include("topnews.php");
                    include("todaysimage.php");
                ?>
            </div> <!-- end of left column -->
            <div class="templatemo_leftcol_subcol">
                <?php
                    include("generalnews.php");
                    include("sports.php");
                    include("regular.php");
                ?>
            </div>
            <?php
                include("tabsec.php");
            ?>
    	</div> <!-- end of left column -->
        <div id="templatemo_main_rightcol">
        	<?php
                include("members.php");
                // include("newsletter.php");
                include("videos.php");
                include("blogs.php");
                include("polls.php");
            ?>
        </div>
    </div>

The file that generate the error is members.php. Here is the code:

<?php
// Connects to your Database
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("tgaff") or die(mysql_error());

//Checks if there is a login cookie
if(isset($_COOKIE['ID_my_site']))

//if there is, it logs you in and directes you to the members page
{
$username = $_COOKIE['ID_my_site'];
$pass = $_COOKIE['Key_my_site'];
$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());
while($info = mysql_fetch_array( $check ))
{
if ($pass != $info['password'])
{
}
else
{
header("Location: members.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['email'] = addslashes($_POST['email']);
}
$check = mysql_query("SELECT * FROM users 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=add.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;
setcookie(ID_my_site, $_POST['username'], $hour);
setcookie(Key_my_site, $_POST['pass'], $hour);

//then redirect them to the members area
header("Location: members.php");
}
}
}
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
}

?>

Can anyone help please? I have spent more than 5 days trying to find out a solution for this problem.

Regards,

Aziz

Member Avatar for diafol

Your problem is line 66 (in the e.g. above) in the members.php. You have included the members file after there has been html output to the page. You can't do this. If there is any output, including php error messages, you'll get an error. This section of code should be placed above the DTD.

For a quick fix:

INDEX.PHP

[B]<?php include('members.php');?>[/B]

...(start and rest of page)...

<div id="templatemo_content">
    	<div id="templatemo_main_leftcol">
        	<div class="templatemo_leftcol_subcol">
            	<?php
                    include("topnews.php");
                    include("todaysimage.php");
                ?>
            </div> <!-- end of left column -->
            <div class="templatemo_leftcol_subcol">
                <?php
                    include("generalnews.php");
                    include("sports.php");
                    include("regular.php");
                ?>
            </div>
            <?php
                include("tabsec.php");
            ?>
    	</div> <!-- end of left column -->
        <div id="templatemo_main_rightcol">
        	<?php
                [B]echo $members_output;[/B]
                // include("newsletter.php");
                include("videos.php");
                include("blogs.php");
                include("polls.php");
            ?>
        </div>
    </div>

MEMBERS.PHP

<?php
// Connects to your Database
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("tgaff") or die(mysql_error());
 
//Checks if there is a login cookie
if(isset($_COOKIE['ID_my_site']))
 
//if there is, it logs you in and directes you to the members page
{
$username = $_COOKIE['ID_my_site'];
$pass = $_COOKIE['Key_my_site'];
$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());
while($info = mysql_fetch_array( $check ))
{
if ($pass != $info['password'])
{
}
else
{
header("Location: members.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['email'] = addslashes($_POST['email']);
}
$check = mysql_query("SELECT * FROM users 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=add.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;
setcookie(ID_my_site, $_POST['username'], $hour);
setcookie(Key_my_site, $_POST['pass'], $hour);
 
//then redirect them to the members area
header("Location: members.php");
[B]exit;[/B]
}
}
}
else
{
 
// if they are not logged in
$members_output = <form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">\n<table border=\"0\">
\n\t<tr>\n\t\t<td colspan=2>\n\t\t\t<h1>Login</h1>\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td>Username:\n\t\t</td>\n\t\t<td>
\n\t\t\t<input type=\"text\" name=\"username\" maxlength=\"40\" />
\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td>Password:\n\t\t</td>\n\t\t<td>\n\t\t\t
<input type=\"password\" name=\"pass\" maxlength=\"50\" />
\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td colspan=\"2\" align=\"right\">
\n\t\t\t<input type=\"submit\" name=\"submit\" value=\"Login\" />\n\t\t</td>\n\t</tr>\n</table>\n</form>";
}
?>

The \n and \t just beautify the html output - they're optional. The form is now in a variable and can be output anywhere on the page.

Your problem is line 66 (in the e.g. above) in the members.php. You have included the members file after there has been html output to the page. You can't do this. If there is any output, including php error messages, you'll get an error. This section of code should be placed above the DTD.

For a quick fix:

INDEX.PHP

[B]<?php include('members.php');?>[/B]

...(start and rest of page)...

<div id="templatemo_content">
    	<div id="templatemo_main_leftcol">
        	<div class="templatemo_leftcol_subcol">
            	<?php
                    include("topnews.php");
                    include("todaysimage.php");
                ?>
            </div> <!-- end of left column -->
            <div class="templatemo_leftcol_subcol">
                <?php
                    include("generalnews.php");
                    include("sports.php");
                    include("regular.php");
                ?>
            </div>
            <?php
                include("tabsec.php");
            ?>
    	</div> <!-- end of left column -->
        <div id="templatemo_main_rightcol">
        	<?php
                [B]echo $members_output;[/B]
                // include("newsletter.php");
                include("videos.php");
                include("blogs.php");
                include("polls.php");
            ?>
        </div>
    </div>

MEMBERS.PHP

<?php
// Connects to your Database
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("tgaff") or die(mysql_error());
 
//Checks if there is a login cookie
if(isset($_COOKIE['ID_my_site']))
 
//if there is, it logs you in and directes you to the members page
{
$username = $_COOKIE['ID_my_site'];
$pass = $_COOKIE['Key_my_site'];
$check = mysql_query("SELECT * FROM users WHERE username = '$username'")or die(mysql_error());
while($info = mysql_fetch_array( $check ))
{
if ($pass != $info['password'])
{
}
else
{
header("Location: members.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['email'] = addslashes($_POST['email']);
}
$check = mysql_query("SELECT * FROM users 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=add.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;
setcookie(ID_my_site, $_POST['username'], $hour);
setcookie(Key_my_site, $_POST['pass'], $hour);
 
//then redirect them to the members area
header("Location: members.php");
[B]exit;[/B]
}
}
}
else
{
 
// if they are not logged in
$members_output = <form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">\n<table border=\"0\">
\n\t<tr>\n\t\t<td colspan=2>\n\t\t\t<h1>Login</h1>\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td>Username:\n\t\t</td>\n\t\t<td>
\n\t\t\t<input type=\"text\" name=\"username\" maxlength=\"40\" />
\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td>Password:\n\t\t</td>\n\t\t<td>\n\t\t\t
<input type=\"password\" name=\"pass\" maxlength=\"50\" />
\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td colspan=\"2\" align=\"right\">
\n\t\t\t<input type=\"submit\" name=\"submit\" value=\"Login\" />\n\t\t</td>\n\t</tr>\n</table>\n</form>";
}
?>

The \n and \t just beautify the html output - they're optional. The form is now in a variable and can be output anywhere on the page.

Hi Ardav,

I tried changing the code as per your suggestion, but I started to receive a new error. It is relevant to the last paragraph of the code:

// if they are not logged in
$members_output = <form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">\n<table border=\"0\">
\n\t<tr>\n\t\t<td colspan=2>\n\t\t\t<h1>Login</h1>\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td>Username:\n\t\t</td>\n\t\t<td>
\n\t\t\t<input type=\"text\" name=\"username\" maxlength=\"40\" />
\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td>Password:\n\t\t</td>\n\t\t<td>\n\t\t\t
<input type=\"password\" name=\"pass\" maxlength=\"50\" />
\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td colspan=\"2\" align=\"right\">
\n\t\t\t<input type=\"submit\" name=\"submit\" value=\"Login\" />\n\t\t</td>\n\t</tr>\n</table>\n</form>";

It seems to be way to advanced to me to figure it out as I have never assigned a form action output to a variable:$.

The error message is:


Parse error: syntax error, unexpected '<' in C:\xampp\htdocs\tgaff\members.php on line 76


Which is the 1st line in the paragraph.

What could be the problem?

Thanking you,

Aziz

Member Avatar for diafol

Sorry my fault - I forgot to put a " at the start of the form:

$members_output = [B]"[/B]<form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">\n<table border=\"0\">
\n\t<tr>\n\t\t<td colspan=2>\n\t\t\t<h1>Login</h1>\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td>Username:\n\t\t</td>\n\t\t<td>
\n\t\t\t<input type=\"text\" name=\"username\" maxlength=\"40\" />
\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td>Password:\n\t\t</td>\n\t\t<td>\n\t\t\t
<input type=\"password\" name=\"pass\" maxlength=\"50\" />
\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td colspan=\"2\" align=\"right\">
\n\t\t\t<input type=\"submit\" name=\"submit\" value=\"Login\" />\n\t\t</td>\n\t</tr>\n</table>\n</form>";
commented: My problem was totally solved and I got the site working now. +1

Sorry my fault - I forgot to put a " at the start of the form:

$members_output = [B]"[/B]<form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">\n<table border=\"0\">
\n\t<tr>\n\t\t<td colspan=2>\n\t\t\t<h1>Login</h1>\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td>Username:\n\t\t</td>\n\t\t<td>
\n\t\t\t<input type=\"text\" name=\"username\" maxlength=\"40\" />
\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td>Password:\n\t\t</td>\n\t\t<td>\n\t\t\t
<input type=\"password\" name=\"pass\" maxlength=\"50\" />
\n\t\t</td>\n\t</tr>
\n\t<tr>\n\t\t<td colspan=\"2\" align=\"right\">
\n\t\t\t<input type=\"submit\" name=\"submit\" value=\"Login\" />\n\t\t</td>\n\t</tr>\n</table>\n</form>";

Thank you very much for your help .. it seems that it is resolved apart from selecting the right page to redirect the user.

I will double check my code and confirm back to you.

Regards,

Aziz

Hi ardav,

Just wanted to let you know that I got all working now. Thank you a zillion (not sure how much is that) for your help.

Regards,

Aziz

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.