Thứ Năm, 5 tháng 7, 2012

Tạo Trang Đănng Nhâp Và Đăng Ký Bằng PHP - MySQL

Posted by Unknown Thứ Năm, tháng 7 05, 2012, under | No comments

Vấn đề là chúng ta có 1 trang Web, có một số nội dung ( thao tác ) mà khách không được xem, chỉ có thành viên ( đã đăng ký và đăng nhập ) mới đươc xem . Ta sẽ  làm sao ? Demo sau sẽ giúp bạn hiểu thêm về vấn đề đó.
Các bước thực hiện :

1. Tạo 1 CSDL là "dangky" ,trong database "dangky" tạo table là "members" , table " members" có 4 cột: id ,uername, password, email .
Hình minh họa:

2.Tạo file"mysql.php", file này có chức năng là kết nối CSDL vói MySQL, nội dung file như sau:

<?php
$_host = "127.0.0.1"; // mặc định là localhost
$db_name = "dangky"; // do bạn tạo ra trong MySQL
$login_username = "root"; // mặ đinh, có thể thay đổi
$login_password = ""; // mặc định, có thể thay đổi 
@mysql_connect("{$_host}", "{$login_username}", "{$login_password}") or die("Không thể kết nối database");
@mysql_select_db("{$db_name}") or die("Không thể chọn database");
?>


3. Tạo file "index.html", file này chứa Link liên kết đến trang muốn xem nội dung (see.php), nội dung file như sau:

<html>
<head>
<title>Trang Chủ</title>
</head>
<body>
<br> Chào mừng bạn đến với CôĐơnOnline! <br/>
<br> Phần nội dung muốn xem <br/>
 <a href="see.php"> Nhấp vào để xem nội dung </a>
</body>
</html>

4. Tạo file "see.php", file này có chức nay là : nếu user đã đăng nhập thì hiện tên đăng nhập, cho xem nội dung của trang, 1 nút thoát chứa liên kết đến trang thoát  khỏi tài khoản đã đăng nhập(logout.php), nếu chưa đăng nhập thị đưa ra thông báo và có liên kết đến trang đăng đă nhập (login.php).Nội dung file như sau:


<?php
require_once("mysql.php"); 
@session_start();
if ( isset($_SESSION['user_id']) )

 $user_id = intval($_SESSION['user_id']);
 $sql_query = @mysql_query("SELECT * FROM members WHERE id='{$user_id}'");
$member = @mysql_fetch_array( $sql_query ); 
echo "Bạn đang đăng nhập với tài khoản : " .$member['username'] ."<br/>";
echo" Bạn được quyền xem nội dung trang này" . "<br/>";
print " <a href='logout.php'> thoát </a>";
}
else{ 
echo "Bạn chưa đăng nhập! <a href='login.php'>Nhấp vào đây để đăng nhập</a> ";
 }
?> 


5. Tạo file "logout.php", file này có nhiệm vụ là thoát khỏi tài khoản đã đăng nhập và trả về Trang Chủ (index.html). Nội dung file:


<?php
session_start();
if (isset($_SESSION['user_id'])) {
unset($_SESSION['user_id']);
}
// trở về trang login
header('Location: index.html');
exit;
?>

6. Tạo file "login.php", file này có nhiệm vụ thực hiện chức năng đăng nhập, nếu trùng khớp CSDL thì chuyển user đến trang xem nội dung (see.php), nếu sai yêu cầu user nhập lại hoặc nhấp vào liên kết "Tạo tài khoản" để đưa đến trang tạo tài khoản (register.php). Nộ dung file "login.php" như sau:


<?php
// Tải file mysql.php lên
require_once("mysql.php");
if ( isset($_POST['ok']) )
{
// Dùng hàm addslashes() để tránh SQL injection, dùng hàm md5() để mã hóa password
$username = addslashes( $_POST['username'] );
$password = md5( addslashes( $_POST['password'] ) );
// Lấy thông tin của username đã nhập trong table members
$sql_query = @mysql_query("SELECT id, username, password FROM members WHERE username='{$username}'");
$member = @mysql_fetch_array( $sql_query );
// Nếu username này không tồn tại thì....
if ( @mysql_num_rows( $sql_query ) <= 0 )
{
print "Tên truy nhập không tồn tại. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>";
exit;
}
// Nếu username này tồn tại thì tiếp tục kiểm tra mật khẩu
if ( $password != $member['password'] )
{
print "Nhập sai mật khẩu. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>";
exit;
}
// Khởi động phiên làm việc (session)
@session_start();
$_SESSION['user_id'] = $member['id'];
// Thông báo đăng nhập thành công
print "Bạn đã đăng nhập với tài khoản {$member['username']} thành công. <br/> 
 <a href='see.php'>Nhấp vào đây để xem nội dung </a>";
}
else if(isset($_POST['create'])) {
header("location:register.php"); 
exit;
} else {
// Form đăng nhập
print <<<EOF
<form action="" method="POST">
Tên truy nhập: <input type="text" name="username" value=""> <br/>
Mật khẩu: <input type="password" name="password" value=""> <br/>
<input type="submit" name="ok" value="Đăng nhập">
<input type="submit" name="create" value="Tạo Tài Khoản">
</form>
EOF;
}


?> 


7. Tạo file "register.php",file này có nhiệm vụ kiểm tra user nhập liệu, nếu đúng và đầy đủ thông tin thì thông báo tạo thành công và liên kết đến trang đăng nhập (login.php), ngược lại yêu cầu user kiểm tra lại thông tin nhập . Nội dung file "register.php" như sau:


<?php
// Tải file mysql.php lên
require_once("mysql.php");
if ( isset($_POST['ok']) )
{
// Dùng hàm addslashes() để tránh SQL injection, dùng hàm md5() để mã hóa password
$username = addslashes( $_POST['username'] );
$password = md5( addslashes( $_POST['password'] ) );
$verify_password = md5( addslashes( $_POST['verify_password'] ) );
$email = addslashes( $_POST['email'] );
// Kiểm tra 4 thông tin, nếu có bất kỳ thông tin chưa điền thì sẽ báo lỗi
if ( ! $username || ! $password || ! $verify_password || ! $email )
{
print "Xin vui lòng nhập đầy đủ các thông tin. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>";
exit;
}
// Kiểm tra mật khẩu, bắt buộc mật khẩu nhập lúc đầu và mật khẩu lúc sau phải trùng nhau
if ( $password != $verify_password )
{
print "Mật khẩu không giống nhau, bạn hãy nhập lại mật khẩu. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>";
exit;
}
// Tiến hành tạo tài khoản
@mysql_query("INSERT INTO members (username, password, email) VALUES ('{$username}', '{$password}', '{$email}')");
// Thông báo hoàn tất việc tạo tài khoản
print "Tài khoản {$username} đã được tạo. <a href='login.php'>Nhấp vào đây để đăng nhập</a>";
}
else
{
// Form đăng ký
print <<<EOF
<form action="register.php" method="POST">
Tên truy nhập:     <input type="text" name="username" value=""> <br/>
Mật khẩu:          <input type="password" name="password" value=""> <br/>
Xác nhận mật khẩu: <input type="password" name="verify_password" value=""> <br/>
Địa chỉ E-mail:    <input type="text" name="email" value=""> <br/>
                  <input type="submit" name="ok" value="Đăng ký tài khoản"> <br/>      
</form>
EOF;
}
?> 


8. Chạy Demo:




Xem Nhiều

Bài đăng phổ biến

Lưu trữ blog

Blog Archive