我的登录表单存在问题。我尝试使用PHP和MySQLi登录,但出于某种原因每次按下登录按钮。表单中的字段重置为空白字段。这是我的代码index.php
<html>
<head>
<title>User Login</title>
</head>
<body>
<form action="" method="post">
<table width="500" align="center" bgcolor="skyblue">
<tr align="center">
<td colspan="3"><h2>User Login</h2></td>
</tr>
<tr>
<td align="right"><b>Email</b></td>
<td><input type="text" name="email" required="required"/></td>
</tr>
<tr>
<td align="right"><b>Password:</b></td>
<td><input type="password" name="pass" required="required"></td>
</tr>
<tr align="center">
<td colspan="3">
<input type="submit" name="login" value="Login">
</td>
</tr>
</table>
</form>
</body>
</html>
<?php
session_start();
$con = mysqli_connect("localhost","root","usbw","login");
if (mysqli_connect_errno())
{
echo "MySQLi Connection was not established:" . mysqli_connect_error();
}
// checking the user
if(isset($_POST['login'])){
$email = mysqli_real_escape_string($con,$_POST['email']);
$pass = mysqli_real_escape_string($con,$_POST['pass']);
$sel_user = "SELECT * FROM users WHERE user_email='".$email."' AND user_pass='".$pass."'";
echo $sel_user;
$run_user = mysqli_query($con, $sel_user);
$check_user = mysqli_num_rows($run_user);
echo $check_user;
if($check_user == 1){
$_SESSION['user_email']=$email;
header('Location: loggedin.html'); }
else { header('Location: index.html'); }
}
?>
&#13;
我希望有人可以帮我解决这个问题,因为我真的需要为我的网站构建一个登录表单
答案 0 :(得分:1)
我想指出有关您的代码的一些事项,但您一直遇到的主要问题是您在调用session_start();
和{{1}之前发送标题} 功能。这会导致“已发送标头”警告,并且不会中断您的脚本,但它将无法正常运行。你应该阅读How to fix "Headers already sent" error in PHP。
下面的代码也有所改变,我对它做了一些改变,你真的应该包括
header("Location: ..);
函数后使用exit
(请参阅php - Should I call exit() after calling Location: header?)下面给出了更改后的代码,并且应该放在任何类型的HTML之上。
header("Location ..");
你真正应该做的事情是哈希你的密码 - 从它的外观来看,你的密码存储在数据库中的干净文本中,这是一个大不了-no!
您应该使用password_hash()
和password_verify()
。如果您的数据库遭到破坏,保护您的用户非常重要。
要进一步排查,您应该启用错误报告:
启用此功能后,如果只检查日志,PHP会告诉您出错了。
答案 1 :(得分:0)
老兄试试这个
<html>
<head>
<title>User Login</title>
</head>
<body>
<form action="" method="post">
<table width="500" align="center" bgcolor="skyblue">
<tr align="center">
<td colspan="3"><h2>User Login</h2></td>
</tr>
<tr>
<td align="right"><b>Email</b></td>
<td><input type="text" name="email" required="required"/></td>
</tr>
<tr>
<td align="right"><b>Password:</b></td>
<td><input type="password" name="pass" required="required"></td>
</tr>
<tr align="center">
<td colspan="3">
<input type="submit" name="login" value="Login">
</td>
</tr>
</table>
</form>
</body>
</html>
<?php
session_start();
$con = mysqli_connect("localhost","root","usbw","users");
if (mysqli_connect_errno())
{
echo "MySQLi Connection was not established:" . mysqli_connect_error();
}
// checking the user
if(isset($_POST['login'])){
$email = mysqli_real_escape_string($con,$_POST['email']);
$pass = mysqli_real_escape_string($con,$_POST['pass']);
$sel_user = "SELECT * FROM users WHERE user_email='".$email."' AND user_pass='".$pass."'";
$run_user = mysqli_query($con, $sel_user);
$check_user = mysqli_num_rows($run_user);
if($check_user == 1){
$_SESSION['user_email']=$email;
header('Location: loggedin.html');
}
else {
header('Location: index.html');
}
}
?>