Page 1 of 1

login page simple question

Posted: Mon Jan 05, 2009 1:50 pm
by james7801
cant seem to get this code to display a error on same page if the login wrong

thank you if you can assist


<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input name="myusername" type="text" id="myusername">
<input name="mypassword" type="text" id="mypassword">
<input type="hidden" name="action" value="1"/>
<input type="submit" name="Submit" value="Login">
</form>

<?php
if (isset($_POST['action']) == '1' ){
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name=""; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
header("location:login_success.php");
}
else {
header("location:login.php");
echo "Error with login";
}
}
?>

Re: login page simple question

Posted: Mon Jan 05, 2009 3:08 pm
by reyes99
Hi I am a newbie too but it seems that if you are echoing the error after you call the page it will never display the error. I would try this echo the error and then the header line will refresh after 5 seconds and then load the login.php page giving the user 5 seconds to read the message.

else {
echo "Error with login";
header("refresh: 5; login.php";

Hope this helps.

Re: login page simple question

Posted: Mon Jan 05, 2009 3:20 pm
by james7801
oh i see what you mean

waiting for 5 secs isnt really that professional

is there any other things i can try

any good tut

Re: login page simple question

Posted: Mon Jan 05, 2009 3:59 pm
by reyes99
You can try this with a link back to login.php or put a button linking back.

Code: Select all

<?php
echo "this is an error<br>";
echo "<a href='login.php;'>Click here to log in again</a>";
?> 
 

Re: login page simple question

Posted: Mon Jan 05, 2009 4:16 pm
by james7801
is there no way of keeping it on the same page?

Re: login page simple question

Posted: Mon Jan 05, 2009 4:18 pm
by Syntac
There is a way. Only call a redirect if the login is correct. Otherwise, have it print the error in the appropriate place.

(Also, I would put the PHP code at the top.)

Re: login page simple question

Posted: Mon Jan 05, 2009 4:23 pm
by james7801
oh yea so simple

great idea

thanks for all the help guys