![](/img/trans.png)
[英]How to verify user details using PHP by retrieving data from SQLite3 database?
[英]Can't verify the form details with database using php
我創建了此登錄頁面表單
<form name="loginform" method="post" action="home1.php" enctype="multipart/form-data" id="Form1" onsubmit="return Validateloginform(this)">
<input type="hidden" name="formid" value="form1">
<div id="wb_Text14" style="position:absolute;left:44px;top:13px;width:412px;height:38px;z-index:0;text-align:left;">
<span style="color:#000080;font-family:'Comic Sans MS';font-size:27px;"> <strong> LOGIN </strong></span></div>
<div id="wb_Text15" style="position:absolute;left:29px;top:75px;width:122px;height:27px;z- index:1;text-align:left;">
<span style="color:#000080;font-family:'Comic Sans MS';font-size:19px;"><strong> USERNAME</strong></span></div>
<input type="text" id="Editbox6" style="position:absolute;left:187px;top:75px;width:267px;height:28px;line-height:28px;z-index:2;" name="username" value="">
<div id="wb_Text16" style="position:absolute;left:34px;top:129px;width:125px;height:27px;z- index:3;text-align:left;">
<span style="color:#000080;font-family:'Comic Sans MS';font-size:19px;"> <strong>PASSWORD</strong></span></div>
<input type="password" id="Editbox7" style="position:absolute;left:187px;top:129px;width:267px;height:28px;line-height:28px;z-index:4;" name="password" value="">
<input type="submit" id="Button1" name="submit" value="Submit" style="position:absolute;left:142px;top:223px;width:195px;height:52px;z- index:5;">
</form>
我的PHP代碼是
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['formid'] == 'form1') {
$mysql_server = 'localhost';
$mysql_username = 'root';
$mysql_password = '';
$mysql_database = 'register';
$mysql_table = 'users';
$db = mysqli_connect($mysql_server, $mysql_username, $mysql_password, $mysql_database);
if (!$db) {
die('Failed to connect to database server! <br>' . mysqli_connect_error());
}
mysqli_select_db($db, $mysql_database) or die('Failed to select database<br>' . mysqli_connect_error());
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = mysqli_query($db, $sql);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
if (mysqli_num_rows($result) == 1) {
session_start();
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
header('Location: home1.php');
exit;
} else {
$error = "Incorrect username and password";
}
}
?>
我不知道這段代碼有什么問題。 一切似乎都很好。 它不是用數據庫中存在的數據來驗證在登錄表單中輸入的數據。 即使我輸入了錯誤的密碼或錯誤的用戶名,甚至什么也沒輸入,只要按提交按鈕,它都會成功地將我重定向到所需的頁面。 我的注冊表格和代碼可以正常工作,並且數據已通過表格成功輸入到數據庫中。
我想要的頁面名稱是home1.php。 我在同一網頁上有注冊表格和登錄表格。 早些時候,我在同一頁面上有注冊表格和登錄表格的php代碼。 當時,當我運行這段代碼時,它曾經用於將我重定向到同一頁面本身。 我的老師要求我將登錄表單的php代碼放入所需的網頁,即home1.php。 我把它放好,然后當我按下提交按鈕時,它將我重定向到home1.php頁面(我想要的頁面),但是我發現即使我沒有在登錄表單中輸入任何內容並按提交,它也會將我重定向到所需的頁面,如果我輸入了數據庫中不存在的用戶名和密碼,它將再次將我重定向到所需的頁面。 然后,我將登錄表單php代碼放在另一個文件中,然后嘗試訪問home1.php頁面,但是存在相同的問題。 請幫我 。 我不知道該怎么辦 。 謝謝 !
您的代碼中有幾個錯誤。
您總是被重定向到home1.php,因為您的表單已存在
<form name="loginform" method="post" action="home1.php" enctype="multipart/form-data" id="Form1" onsubmit="return Validateloginform(this)">
這將在home1.php文件上執行您的代碼,您應該將登錄代碼存儲在另一個頁面中(假設loginPage.php),因此您的表單應為:
<form name="loginform" method="post" action="loginPage.php" enctype="multipart/form-data" id="Form1" onsubmit="return Validateloginform(this)">
您還應該將代碼更改為以下內容:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['formid'] == 'form1') {
$mysql_server = 'localhost';
$mysql_username = 'root';
$mysql_password = '';
$mysql_database = 'register';
$mysql_table = 'users';
$db = mysqli_connect($mysql_server, $mysql_username, $mysql_password, $mysql_database);
if (!$db) {
die('Failed to connect to database server! <br>' . mysqli_connect_error());
}
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username = '$username'";
$result = mysqli_query($db, $sql);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
if (mysqli_num_rows($result) == 1 && $row["password"] == $password) {
session_start();
$_SESSION['username'] = $username;
header('Location: home1.php');
exit;
} else {
$error = "Incorrect username and password";
}
}
?>
上面的代碼正常工作。
您還應該考慮在注冊和登錄頁面上使用一些哈希函數,因為在數據庫中存儲純文本密碼非常不安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.