For starters, you need to properly indent your code so that it is readable, e.g.,
<?php
$v_username = addSlashes($_POST['username']);
$v_password = addSlashes(md5($_POST['password']));
if ($_POST['username'] == "" || $_POST['password'] == "")
{
echo "Please, you must supply username and password fields!";
}
else
{
$conn = mysql_connect("localhost", "USERNAME", "PS") or die ("Couldnt connect to database");
if (!$conn)
{
die('Could not connect: ' . mysql_error());
}
else
{
mysql_select_db("DATABASE",$conn) or die ("Couldnt find database");
$result = mysql_query("SELECT * FROM users WHERE username='$v_username'");
$intResultCount = count($result);
echo "result found: " . $intResultCount . "<br />";
if ($intResultCount == 1)
{
if ($v_username != $result['username'])
{
echo "User does not exist!" . " ". "Please try again!";
}
elseif ($result['username'] == $v_username && $result['password'] == $v_password)
{
echo "Congratulations" . " " . $v_username . "!" . "<br />";
echo "You have successfully logged in!";
echo $intResultCount . "<br />";
}
else
{
echo "The password is invalid! Please try again.";
}
}
}
}
?>
Now, one problem is that $result is a resource result. It is not an array. You first need to do a:
$result = mysql_fetch_assoc($result);
Next, we see that the error message comes when $v_username != $result['username']. Of course, since you selected the row such that the username is equal to $v_username, this appears to be impossible. The problem is, you used addslashes to obtain $v_username, so if a character was escaped by the addslashes, $v_username != $result['username']. Also
The correct approach is to dispense with the use of addslashes, especially the use of addslashes so early on. Rather:
$v_username = $_POST['username'];
$v_password = md5($_POST['password']);
// ...
$query = sprintf("SELECT * FROM users WHERE username='$v_username'",
mysql_real_escape_string($v_username));
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
if ($row)
{
if ($row['password'] == $v_password)
{
echo "Congratulations" . " " . $v_username . "!" . "<br />";
echo "You have successfully logged in!";
echo $intResultCount . "<br />";
}
else
{
echo "The password is invalid! Please try again.";
}
}
else
{
echo "User does not exist!" . " ". "Please try again!";
}
Note that your current scheme of storing the MD5 hashes of passwords in the database is insecure should the database be compromised and your users reuse their passwords. You should also store a user specific salt value for use in the hashing.