【发布时间】:2018-07-02 09:21:33
【问题描述】:
我有一个名为“用户”的表,其中包含“用户名”和“密码”,如果在表单中输入的用户名和密码匹配,用户将被重定向到另一个页面。但我不知道这是否是最好的方法。每当我在表单上输入正确的用户名和密码时,表单就会重置。
<?php
class Database {
function insert() {
$dbhost = 'localhost:8888';
$conn = mysql_connect($dbhost, 'lmaia', 'Luismaia22');
if (! $conn) {
die('Could not connect: ' . mysql_error());
}
else {
echo "connected";
}
}
}
?>
<?php
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST") {
// username and password sent from form
$myusername = mysqli_real_escape_string($db,$_POST['username']);
$mypassword = mysqli_real_escape_string($db,$_POST['password']);
$sql = "SELECT id FROM Users WHERE username = '$myusername' and password = '$mypassword'";
$result = mysqli_query($db,$sql);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$active = $row['active'];
$count = mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count == 1) {
session_register("myusername");
$_SESSION['login_user'] = $myusername;
header("location: Dashboard.html");
}else {
$error = "Your Login Name or Password is invalid";
}
}
?>
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body>
<div id="content">
<form id="login" method="post" accept-charset="UTF-8">
<img src="Resources/avatar.png" widht="200px" alt="Avatar" class="avatar">
<div class="container">
<label for="username"><b>Utilizador</b></label>
<input type="text" placeholder="Introduzir Nome" name="username" required>
<label for="password"><b>Password</b></label>
<input type="password" placeholder="Introduzir Password" name="password" required>
<button type="submit">Login</button>
</div>
</form>
</div>
</body>
</html>
【问题讨论】:
-
关于你的代码有很多话要说,但我认为对你来说第一件事就是让它工作。我总是在这些情况下插入回声,以查看代码的作用。例如,在
$count = mysqli_num_rows($result);行之后,您可以放置echo "Count=[$count]<br>";。如果它为零,您可以检查几件事,例如查询本身:echo "SQL=[$sql]<br>";。等等……这就是所谓的“调试”。 -
我注意到您只从用户表中选择了
id,但您希望在$row中获得更多信息,例如active。但是这不会影响您的代码,因为您不使用$active... 编码草率? -
我尝试使用 echo 并检查了 sql 无法获取我在表单中输入的参数。我知道它有点笨拙,但第一次使用侧服务器语言,通常我是前端开发人员
-
嗯,好的。我认为可能是
mysqli_real_escape_string($db中的$db未定义? -
是的,它未定义,但我将变量替换为 $conn,但仍然没有