Hướng dẫn php mysql password
|
Trong bài này tôi sẽ hướng dẫn các bạn xây dựng chức năng đăng nhập và đăng ký sử dụng php và mysql. Nội dung của bài này rất căn bản và cũng rất phù hợp cho những bạn mới nghiên cứu lập trình web với PHP và MySQL. Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. 1. Tạo cơ sở dữ liệu lưu trữ thông tin người dùngTrước tiên các bạn tạo một cơ sở dữ liệu tên là demo, sau đó chạy đoạn code SQL tạo table như sau: CREATE TABLE `member` (
`username` VARCHAR(255) NOT NULL,
`password` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL,
`fullname` VARCHAR(255) NOT NULL,
`birthday` VARCHAR(10) NOT NULL,
`sex` VARCHAR(3) NOT NULL
) ENGINE = MyISAM'
Bài viết này được đăng tại [free tuts .net] Note: Vì chúng ta đang làm chức năng demo nên tôi không quan tâm đến khóa chính vì vậy tôi không tạo field này. 2. Tạo file kết nối vào MySQLViệc tạo một file kết nối riêng như thế này sẽ giúp các bạn tiết kiệm được code vì khi nào cần kết nối ta chỉ việc gọi tới file này thay vì code kết nối một cách vô tội vạ. Bạn tạo file ketnoi.php với nội dung như sau: <?php
$ketnoi['host'] = 'localhost'; //Tên server, nếu dùng hosting free thì cần thay đổi
$ketnoi['dbname'] = 'demo'; //Đây là tên của Database
$ketnoi['username'] = 'root'; //Tên sử dụng Database
$ketnoi['password'] = '';//Mật khẩu của tên sử dụng Database
@mysql_connect(
"{$ketnoi['host']}",
"{$ketnoi['username']}",
"{$ketnoi['password']}")
or
die("Không thể kết nối database");
@mysql_select_db(
"{$ketnoi['dbname']}")
or
die("Không thể chọn database");
?>
Những thông số trên bạn tự điền lấy nhé. 3. Xây dựng chức năng đăng ký thành viênTrước tiên chúng ta tạo một form đăng ký. Tạo form đăng kýCác bạn tạo file dangky.php và copy nội dung này vào: <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Trang đăng lý</title>
</head>
<body>
<h2>Trang đăng ký thành viên</h2>
<form action="xuly.php" method="POST">
<table cellpadding="0" cellspacing="0" border="1">
<tr>
<td>
Tên đăng nhập :
</td>
<td>
<input type="text" name="txtUsername" size="50" />
</td>
</tr>
<tr>
<td>
Mật khẩu :
</td>
<td>
<input type="password" name="txtPassword" size="50" />
</td>
</tr>
<tr>
<td>
Email :
</td>
<td>
<input type="text" name="txtEmail" size="50" />
</td>
</tr>
<tr>
<td>
Họ và tên :
</td>
<td>
<input type="text" name="txtFullname" size="50" />
</td>
</tr>
<tr>
<td>
Ngày sinh :
</td>
<td>
<input type="text" name="txtBirthday" size="50" />
</td>
</tr>
<tr>
<td>
Giới tính :
</td>
<td>
<select name="txtSex">
<option value=""></option>
<option value="Nam">Nam</option>
<option value="Nu">Nữ</option>
</select>
</td>
</tr>
</table>
<input type="submit" value="Đăng ký" />
<input type="reset" value="Nhập lại" />
</form>
</body>
</html>
Chạy lên kết quả là: Trong form này các bạn để ý phương thức tôi sử dụng là phương thức POST và action sẽ là file xuly.php, khi người dùng click đăng ký thì form sẽ gửi thông tin qua file xuly.php bằng phương thức POST, nhiệm vụ của file này là sẽ lấy thông tin và xử lý lưu vào CSDL. Xử lý request đăng kýTrong file xuly.php ta sẽ lấy thông tin đăng ký và gọi file ketnoi.php để kết nối vào MySQL và tiến hành INSERT. Nội dung file như sau: <?php
// Nếu không phải là sự kiện đăng ký thì không xử lý
if (!isset($_POST['txtUsername'])){
die('');
}
//Nhúng file kết nối với database
include('ketnoi.php');
//Khai báo utf-8 để hiển thị được tiếng việt
header('Content-Type: text/html; charset=UTF-8');
//Lấy dữ liệu từ file dangky.php
$username = addslashes($_POST['txtUsername']);
$password = addslashes($_POST['txtPassword']);
$email = addslashes($_POST['txtEmail']);
$fullname = addslashes($_POST['txtFullname']);
$birthday = addslashes($_POST['txtBirthday']);
$sex = addslashes($_POST['txtSex']);
//Kiểm tra người dùng đã nhập liệu đầy đủ chưa
if (!$username || !$password || !$email || !$fullname || !$birthday || !$sex)
{
echo "Vui lòng nhập đầy đủ thông tin. <a href='javascript: history.go(-1)'>Trở lại</a>";
exit;
}
// Mã khóa mật khẩu
$password = md5($password);
//Kiểm tra tên đăng nhập này đã có người dùng chưa
if (mysql_num_rows(mysql_query("SELECT username FROM member WHERE username='$username'")) > 0){
echo "Tên đăng nhập này đã có người dùng. Vui lòng chọn tên đăng nhập khác. <a href='javascript: history.go(-1)'>Trở lại</a>";
exit;
}
//Kiểm tra email có đúng định dạng hay không
if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
{
echo "Email này không hợp lệ. Vui long nhập email khác. <a href='javascript: history.go(-1)'>Trở lại</a>";
exit;
}
//Kiểm tra email đã có người dùng chưa
if (mysql_num_rows(mysql_query("SELECT email FROM member WHERE email='$email'")) > 0)
{
echo "Email này đã có người dùng. Vui lòng chọn Email khác. <a href='javascript: history.go(-1)'>Trở lại</a>";
exit;
}
//Kiểm tra dạng nhập vào của ngày sinh
if (!ereg("^[0-9]+/[0-9]+/[0-9]{2,4}", $birthday))
{
echo "Ngày tháng năm sinh không hợp lệ. Vui long nhập lại. <a href='javascript: history.go(-1)'>Trở lại</a>";
exit;
}
//Lưu thông tin thành viên vào bảng
@$addmember = mysql_query("
INSERT INTO member (
username,
password,
email,
fullname,
birthday,
sex
)
VALUE (
'{$username}',
'{$password}',
'{$email}',
'{$fullname}',
'{$birthday}',
'{$sex}'
)
");
//Thông báo quá trình lưu
if ($addmember)
echo "Quá trình đăng ký thành công. <a href='/'>Về trang chủ</a>";
else
echo "Có lỗi xảy ra trong quá trình đăng ký. <a href='dangky.php'>Thử lại</a>";
?>
Nội dung file tôi đã comment trong đó rồi nên các bạn đọc nhé, có gì không hiểu thì comment bên dưới mình sẽ trả lời thắc mắc của các bạn. 4. Xây dựng chức năng đăng nhậpTrước tiên để làm được chức năng này bạn phải biết được cách sư dụng session trong php đã nhé, hoặc các bạn đọc nguyên serie php căn bản này luôn cho máu :D. Khi đăng ký thành viên xong người dùng sẽ đăng nhập vào website, như vậy ta phải tiến hành kiểm tra tài khoản và mật khẩu đăng nhập có đúng hay không? nếu đúng thì thông báo thành công, ngược lại thông báo thất bại. Bạn tạo file dangnhap.php với nội dung là các mã HTML thông thường và trong đó có form như sau: <!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action='dangnhap.php?do=login' method='POST'>
<table cellpadding='0' cellspacing='0' border='1'>
<tr>
<td>
Tên đăng nhập :
</td>
<td>
<input type='text' name='txtUsername' />
</td>
</tr>
<tr>
<td>
Mật khẩu :
</td>
<td>
<input type='password' name='txtPassword' />
</td>
</tr>
</table>
<input type='submit' value='Đăng nhập' />
<a href='dangky.php' title='Đăng ký'>Đăng ký</a>
</form>
</body>
</html>
Chạy lên ta có giao diện như sau: Vậy là ta có form đăng ký, trong form này tôi sử dụng method = POST và action chính là trang này luôn, tức là khu submit thì trang này sẽ xử lý đăng nhập luôn. Bây giờ các bạn viết code kiểm tra thông tin đăng nhập, các bạn thêm vào file một đoạn mã PHP như sau: <?php
//Khai báo sử dụng session
session_start();
//Khai báo utf-8 để hiển thị được tiếng việt
header('Content-Type: text/html; charset=UTF-8');
//Xử lý đăng nhập
if (isset($_POST['dangnhap']))
{
//Kết nối tới database
include('ketnoi.php');
//Lấy dữ liệu nhập vào
$username = addslashes($_POST['txtUsername']);
$password = addslashes($_POST['txtPassword']);
//Kiểm tra đã nhập đủ tên đăng nhập với mật khẩu chưa
if (!$username || !$password) {
echo "Vui lòng nhập đầy đủ tên đăng nhập và mật khẩu. <a href='javascript: history.go(-1)'>Trở lại</a>";
exit;
}
// mã hóa pasword
$password = md5($password);
//Kiểm tra tên đăng nhập có tồn tại không
$query = mysql_query("SELECT username, password FROM member WHERE username='$username'");
if (mysql_num_rows($query) == 0) {
echo "Tên đăng nhập này không tồn tại. Vui lòng kiểm tra lại. <a href='javascript: history.go(-1)'>Trở lại</a>";
exit;
}
//Lấy mật khẩu trong database ra
$row = mysql_fetch_array($query);
//So sánh 2 mật khẩu có trùng khớp hay không
if ($password != $row['password']) {
echo "Mật khẩu không đúng. Vui lòng nhập lại. <a href='javascript: history.go(-1)'>Trở lại</a>";
exit;
}
//Lưu tên đăng nhập
$_SESSION['username'] = $username;
echo "Xin chào " . $username . ". Bạn đã đăng nhập thành công. <a href='/'>Về trang chủ</a>";
die();
}
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action='dangnhap.php?do=login' method='POST'>
<table cellpadding='0' cellspacing='0' border='1'>
<tr>
<td>
Tên đăng nhập :
</td>
<td>
<input type='text' name='txtUsername' />
</td>
</tr>
<tr>
<td>
Mật khẩu :
</td>
<td>
<input type='password' name='txtPassword' />
</td>
</tr>
</table>
<input type='submit' name="dangnhap" value='Đăng nhập' />
<a href='dangky.php' title='Đăng ký'>Đăng ký</a>
</form>
</body>
</html>
Đoạn code này sẽ xử lý thông tin và hiển thị thông báo đăng nhập hay thành công, sau khi đăng nhập thành công các bạn click về trang chủ thì nhiệm vụ bây giờ là hiển thị thông tin đã đăng nhập ở trang chủ. 5. Xây dựng trang chủCác bạn tạo file trangchu.php với nội dung như sau: <?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<?php
if (isset($_SESSION['username']) && $_SESSION['username']){
echo 'Bạn đã đăng nhập với tên là '.$_SESSION['username']."<br/>";
echo 'Click vào đây để <a href="logout.php">Logout</a>';
}
else{
echo 'Bạn chưa đăng nhập';
}
?>
</body>
</html>
Trang chủ sẽ hiển thị thông tin đã đăng nhập hay chưa, nếu đăng nhập rồi thì hiển thị tên đăng nhập và một nút logout, click vào nút đó thì ta sẽ gọi qua file logout.php. 5. Xây dựng chức năng logoutNếu thiết lập login ta dùng session với tên là username thì bây giờ để thiết lập logout ta chỉ cần unset giá trị đó. Các bạn tạo file logout.php với nội dung như sau: <?php session_start();
if (isset($_SESSION['username'])){
unset($_SESSION['username']); // xóa session login
}
?>
<a href="trangchu.php">HOME</a>
Kết luận:Bài này chỉ mang tính chất tham khảo các bạn hãy lấy làm ví dụ thôi nhé. Chúc các bạn học tốt. À quên là trong bài này mình sử dụng thư viện mysql để kêt nối database, đây là thư viện lỗi thời rồi nên bạn hãy thay thế bằng thư viện mysqli nhé. |
Bài Viết Liên Quan
Hướng dẫn gmdate in php
Cú phápHàm gmdate() trong PHP có cú pháp như sau:string gmdate ( string $format [, int $timestamp] ); Định nghĩa và cách sử dụngHàm này giống hàm date(), ngoại trừ việc ...
Defining a function in php
The real power of PHP comes from its functions.PHP has more than 1000 built-in functions, and in addition you can create your own custom functions.PHP Built-in FunctionsPHP has over 1000 built-in ...
How do i print the contents of a dictionary in python?
In this article, we will discuss different ways to print line by line the contents of a dictionary or a nested dictionary in python.As dictionary contains items as key-value pairs. So, first, ...
Hướng dẫn mongodb uri
Docs Home → MongoDB ManualThis document describes the URI formats for defining connections between applications and MongoDB instances in the official MongoDB Drivers. For a list of drivers and ...
How do you print non scientific notation in python?
Heres my code:x = 1.0 y = 100000.0 print x/y My quotient displays as 1.00000e-05.Is there any way to suppress scientific notation and make it display as 0.00001? Im going to use the result as a ...
Javascript trong lập trình web
Bài Viết Mới # JAVASCRIPT CƠ BẢN Bài 30: Use strict mode trong javascript Use strict dịch sang tiếng việt thì có nghĩa là sử dụng sự nghiêm ngặt. Khi một đoạn ...
Tử vi ngày 24 01 2023
Để mọi việc diễn ra suôn sẻ, thành công thì việc xem âm lịch ngày 24 tháng 1 năm 2023 tốt hay xấu rất quan trọng. Nó sẽ cung cấp đầy đủ các thông tin về ...
Hướng dẫn php intellisense
Visual Studio Code (VS Code) là một trình soạn thảo được phát triển bởi Microsoft, với ưu điểm nhẹ nhàng, dễ sử dụng, dễ dàng mở rộng với nhiều extension ...
Hướng dẫn set time in mysql
5.1.15 MySQL Server Time Zone Support This section describes the time zone settings maintained by MySQL, how to load the system tables required for named time support, how to stay current with ...
Hướng dẫn t in python 3
In the following examples, input and output are distinguished by the presence or absence of prompts (>>> and …): to repeat the example, you must type everything after the prompt, when the ...
Get value by key in associative array php
I have an array of objects and I would like to access the values by the keys. <?php $name = [ [ firstname => John, ...
Is python gc stop the world?
Python is one of the most popular programming languages and its usage continues to grow. It ranked third in the TIOBE language of the year in 2021 due to its growth rate. Python’s ease of ...
Train and test data in python
Evaluate Your ModelIn Machine Learning we create models to predict the outcome of certain events, like in the previous chapter where we predicted the CO2 emission of a car when we knew the weight and ...
How do you count elements in an object in php?
(PHP 4, PHP 5, PHP 7, PHP 8)count — Counts all elements in an array or in a Countable objectDescriptioncount(Countable|array $value, int $mode = COUNT_NORMAL): intParameters value An array or ...
Hướng dẫn chạy python online
Bài viết được sự cho phép của tác giả Nguyễn Việt HưngLàm một trang web bằng Python là việc cực kỳ đơn giản, 5-7 dòng code với Flask framework, bạn đã ...
Hướng dẫn bootstrap the a
Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người. Là ...
How do you show quartiles in python?
We have seen what are quartiles and how can be useful in quickly presenting the main characteristics of a group of data.Let’s see how to visualise them.I will use as example the age of the Nobel ...
Hướng dẫn edit xml file python
What is XML?XML stands for eXtensible Markup Language. It was designed to store and transport small to medium amounts of data and is widely used for sharing structured information.Python enables you ...
How to find common words in python
I want to cross check names from two word documents and then print the common names in the same program. How do I do so? Do I use regex or simply use the in function? S.S. Anne14.6k7 gold badges35 ...
Tra cứu điểm thi jlpt 7 2023
Chứng chỉ JLPT là một trong 2 chứng chỉ tiếng Nhật được chấp nhận cho đơn hàng kỹ năng đặc định. Do vậy, kết quả kỳ thi năng lực tiếng Nhật ...
