In the following script I am logging in and it is supposed to be taking me to a page called "members.php" but all that happens is a blank screen and it doesn't appear to attempt to get to the desired page. Here is the code I'm using. Thanks for your Help!

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<?php
// Connects to your Database
mysql_connect("mysql401.ixwebhosting.com", "alanos2_alanos", "rinker310") or die(mysql_error());
mysql_select_db("alanos2_youthtopia_mbr") 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)
{
}
else
{
header("Location: members.php");

}
}
}

//if the login form is submitted
if (isset($_POST)) { // if form has been submitted

// makes sure they filled it in
if(!$_POST | !$_POST) {
die('You did not fill in a required field.');
}
// checks it against the database

if (!get_magic_quotes_gpc()) {
$_POST = addslashes($_POST);
}
$check = mysql_query("SELECT * FROM users WHERE username = '".$_POST."'")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="register.php">Click Here to Register</a>');
}
while($info = mysql_fetch_array( $check ))
{
$_POST = stripslashes($_POST);
$info = stripslashes($info);
$_POST = md5($_POST);

//gives error if the password is wrong
if ($_POST != $info) {
die('Incorrect password, please try again.');
}
else
{

// if login is ok then we add a cookie
$_POST = stripslashes($_POST);
$hour = time() + 3600;
setcookie("ID_my_site", $_POST, $hour);
setcookie("Key_my_site", $_POST, $hour);

//then redirect them to the members area
header("Location: members.php");
}
}
}
else
{

// if they are not logged in
?>
<form action="<?php echo $_SERVER?>" 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
}

?>

</body>
</html>

sometimes the location:header part has a problem, since it is supposed to be set before any html. the way around this is to put <?php ob_start(); ?> at the very top of the page, before the <html> tag and <?php ob_flush(); ?> after the last line </html>.

There is an alternative way to do this, (and the proper way) is if you put all the php code before the start of your html. these methods should both work

no problem, i only found this out yesterday actually, I had the exact same problem. lol

sometimes the location:header part has a problem, since it is supposed to be set before any html. the way around this is to put <?php ob_start(); ?> at the very top of the page, before the <html> tag and <?php ob_flush(); ?> after the last line </html>.

Looks like this is already solved, but here's a related thing to think about.

Do you have php's display_errors flag on? If so, you would have seen an error message, "Headers already sent" or something like that.

Since you just got a blank screen, I'm guessing display_errors is off. The recommended php.ini file turns this off for production purposes - because you don't want your users to see error messages. However, if you're still developing stuff (or trying out a new script), it helps a lot to have the errors shown.

I think you can set it at runtime using

ini_set("display_errors", "On");

I recently switched to the recommended php.ini file (turning off errors), and it can be really frustrating when testing stuff out. So I always switch the errors back on when I'm trying something new - that feedback really helps.

Good luck,
- Walkere

This article has been dead for over six months. Start a new discussion instead.