這是一個使用PHP、MySQL和HTML來創建登錄系統的教程。您的網站需要是動態的,訪問者需要即時訪問。因此,他們希望能夠多次登錄。登錄驗證系統對於任何網絡應用程序來說都非常普遍。它允許註冊用戶訪問網站和僅限成員的功能。當我們想要為用戶存儲信息時,它也非常有用。它涵蓋了從購物網站、教育網站到會員網站等所有內容。
*聯盟鏈接。請參閱使用條款。
這個教程分為5個部分。
目錄
- 要求
- 註冊系統
- 登錄系統
- 歡迎頁面
- 登出腳本
1) 創建PHP登錄系統的要求
為了成功地跟隨這個教程並建立一個PHP登入系統,您必須擁有並熟悉以下事項:
- 支持PHP運行代碼的伺服器
- 對HTML和CSS有一定的了解和熟悉
- 在設備上安裝MySQL數據庫,並知道如何使用它
- 能夠在登入系統上添加所有正確的安全措施
如果您擁有所有這些基本要求和知識,那麼您可以繼續進入下一步,深入了解如何建立您的PHP登入系統。
2) 建立一個註冊系統
在這部分中,我們將創建一個註冊系統,允許用戶創建系統中的新帳戶。我們的第一步是創建一個HTML註冊表單。這個表單相當簡單。它只要求名稱、電子郵件、密碼和確認密碼。每個用戶的電子郵件地址將是唯一的。不允許同一電子郵件地址有多個帳戶。對於試圖使用同一電子郵件地址創建多個帳戶的用戶會顯示錯誤消息。
步驟1:在HTML中創建註冊表單
我們將創建一個名為register.php的PHP文件,其中包含以下代碼。這是一個帶有一些基本驗證的簡單HTML表單。如果您不熟悉HTML,則可以從許多在線網站上獲取現成的html5登錄表單模板。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sign Up</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Register</h2>
<p>Please fill this form to create an account.</p>
<form action="" method="post">
<div class="form-group">
<label>Full Name</label>
<input type="text" name="name" class="form-control" required>
</div>
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" class="form-control" required />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="form-group">
<label>Confirm Password</label>
<input type="password" name="confirm_password" class="form-control" required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-primary" value="Submit">
</div>
<p>Already have an account? <a href="login.php">Login here</a>.</p>
</form>
</div>
</div>
</div>
</body>
</html>
上述HTML表單的輸出將如下所示。
通過添加”default”的HTML屬性,所有輸入字段都是必需的。使用”type=”email””將驗證用戶提供的電子郵件地址,如果電子郵件地址無效,則會顯示錯誤。對於註冊表單,我們使用了bootstrap來進行快速開發。如果您想要節省HTML代碼的時間,您可以隨時為您的項目使用一些免費的html5模板。
第2步:創建MySQL數據庫表
您需要創建一個具有任何適合的名稱的新數據庫。之後,請執行以下SQL查詢以在您新創建的MySQL數據庫中創建用戶表。
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(75) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
第3步:創建數據庫配置文件
現在,我們已經創建了使用者資料表。讓我們創建一個新的 PHP 檔案,命名為 config.php,以連接至 MySQL 資料庫。將以下程式碼貼到 config.php 檔案中,並將資料庫名稱更改為您在建立資料庫時選擇的名稱。
步驟 4:建立一個 Session 檔案
讓我們建立一個名為 session.php 的檔案。在這個檔案中,我們將啟動 session 並檢查使用者是否已經登入,如果是,則將使用者重新導向至 welcome.php 檔案。
步驟 5:在 PHP 中建立註冊表單
最後,現在是時候創建一個 PHP 程式碼,讓使用者可以將他們的帳號註冊到系統中。這個 PHP 程式碼將提醒使用者,如果任何使用者已經使用相同的電子郵件地址註冊,則會出現錯誤。
在 register.php 檔案中替換以下程式碼。
prepare("SELECT * FROM users WHERE email = ?")) {
$error = '';
// 綁定參數(s = 字串,i = 整數,b = blob,等等),在我們的案例中,使用者名稱是一個字串,所以我們使用 "s"
$query->bind_param('s', $email);
$query->execute();
// 儲存結果以便檢查帳戶是否存在於資料庫中。
$query->store_result();
if ($query->num_rows > 0) {
$error .= 'The email address is already registered!
';
} else {
// 驗證密碼
if (strlen($password ) < 6) {
$error .= 'Password must have atleast 6 characters.
';
}
// 驗證確認密碼
if (empty($confirm_password)) {
$error .= 'Please enter confirm password.
';
} else {
if (empty($error) && ($password != $confirm_password)) {
$error .= 'Password did not match.
';
}
}
if (empty($error) ) {
$insertQuery = $db->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?);");
$insertQuery->bind_param("sss", $fullname, $email, $password_hash);
$result = $insertQuery->execute();
if ($result) {
$error .= 'Your registration was successful!
';
} else {
$error .= 'Something went wrong!
';
}
}
}
}
$query->close();
$insertQuery->close();
// 關閉資料庫連線
mysqli_close($db);
}
?>
Sign Up
Register
Please fill this form to create an account.
用戶點擊提交按鈕後,將檢查$_SERVER["REQUEST_METHOD"] == "POST"
和$_POST['submit']
變量是否已設置。出於安全考慮,我們建議不要將密碼以明文形式存儲在數據庫中。我們使用password_hash()
函數,該函數使用強大的單向哈希算法創建新的密碼哈希。
上述PHP腳本將驗證沒有用戶使用相同的電子郵件地址註冊,並驗證密碼。確認驗證後,我們將用戶提供的信息存儲在用戶表中,並通知用戶註冊成功。
3) 構建登錄系統
在這部分中,我們將創建一個登錄表單,允許用戶訪問系統的受限區域。在我們的情況下,受限區域是一個歡迎頁面,我們將在下一部分中介紹。
步驟1: 在HTML中創建登錄表單
以下是HTML中的登錄表單。將其粘貼到名為login.php的文件中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Login</h2>
<p>Please fill in your email and password.</p>
<form action="" method="post">
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" class="form-control" required />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-primary" value="Submit">
</div>
<p>Don't have an account? <a href="register.php">Register here</a>.</p>
</form>
</div>
</div>
</div>
</body>
</html>
上述代碼的輸出將如下所示
步驟2: 在PHP中創建登錄系統
在 HTML 中创建登录表单后,我们将编写一个代码来验证登录凭据。在表单提交时,我们将检查电子邮件和密码是否已填写。如果它们已填写,则我们将执行一个 SELECT
查询,在数据库中根据电子邮件和密码查找记录。如果找到任何记录,我们将在会话中存储 "userID"
,并将用户重定向到 welcome.php 文件,否则,用户将收到错误消息提示。
让我们在 login.php 文件中替换以下代码。
Please enter email.';
}
// 验证密码是否为空
if (empty($password)) {
$error .= 'Please enter your password.
';
}
if (empty($error)) {
if($query = $db->prepare("SELECT * FROM users WHERE email = ?")) {
$query->bind_param('s', $email);
$query->execute();
$row = $query->fetch();
if ($row) {
if (password_verify($password, $row['password'])) {
$_SESSION["userid"] = $row['id'];
$_SESSION["user"] = $row;
// 将用户重定向到欢迎页面
header("location: welcome.php");
exit;
} else {
$error .= 'The password is not valid.
';
}
} else {
$error .= 'No User exist with that email address.
';
}
}
$query->close();
}
// 关闭连接
mysqli_close($db);
}
?>
Login
Login
Please fill in your email and password.
4) 创建欢迎页面
以下是 welcome.php 文件的代码。用户在成功登录后将被重定向到这个页面。我们在页面顶部添加了一些代码来检查用户是否未登录,然后将用户重定向到登录页面。
让我们创建一个 welcome.php 文件,并将以下代码粘贴到其中。
Welcome
Hello, . Welcome to demo site.
5) 注销脚本
最后,让我们创建一个 logout.php 文件,并将以下代码粘贴到其中。
用戶一旦點擊登出鏈接,上述腳本將被調用以銷毀會話並將用戶重定向到login.php文件。
結論
在本教程中,我解釋了如何使用HTML、PHP和MySQL創建登錄系統。一旦您了解了創建登錄系統的簡單性,您可以添加其他功能,如重置密碼、忘記密碼、驗證電子郵件地址、編輯用戶個人資料等。
Source:
https://dzone.com/articles/create-a-login-system-using-php