my signing . HTML只是一个普通的HTML页面,有用户名和密码字段,还有一个登录按钮。我想把所有错误信息显示在前面的signing。html页面的echo下。logincheck.php代码如下:
<?php
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
if($username && $password)
{
$connect = mysql_connect("localhost","root","") or die("Couldn't connect!");
mysql_select_db("project") or die("Couldn't find db");
$query= mysql_query("SELECT * From signup1 WHERE username='$username'");
$numrows = mysql_num_rows($query);
if ($numrows!=0)
{
//code to login
while ($row = mysql_fetch_assoc($query))
{
$dbusername = $row['username'];
$dbpassword = $row['password'];
}
if($username==$dbusername&&$password==$dbpassword)
{
$_SESSION['username']=$username;
header('Location:mailbox.php');
}
else
echo "Incorrect password!";
}
else
die("That user does't exist!");
}
else
die("Please enter username and Password!");
if($_SESSION['username'])
echo "Welcome, " .$_SESSION['username']."!<br><a href='logout.php'>Logout</a><br> ";
else
die ("You must be logged in!");
?>
最好的方法是使这两个页面成为一个页面。表单可以指向同一个页面,您可以使用许多变体来检查POST数据是否可用。如果有POST数据,则处理登录。
如果登录成功,根据需要重定向。否则打印错误。一些示例代码:
<?php
if(!empty($_POST)){
// logic to check login status
if( login_successful ){
// redirect user
exit;
}
print "error";
}
?>
<form method="post" action="login.php">
login form here
</form>
如果我理解错了请纠正我,但你基本上只是想重定向到登录页面,对吗?如果是,你可以这样做:
header("Location: ./login.php?error=incorrect+password");
或类似的,然后在login.php中进行处理以显示错误消息。
作为题外话,考虑将逻辑和表示分离:twig或其他PHP模板引擎