WEB TIN TỨC PHP CĂN BẢN
Bài 1: PHP trang tin tức - Tạo database và cấu trúc folder admin Bài 2: PHP trang tin tức - Viết thư viện xử lý database admin Bài 3: PHP trang tin tức - Viết thư viện session và functions admin Bài 4: PHP trang tin tức - Kết nối database và cấu trúc index admin Bài 5: PHP trang tin tức - Xây dựng header và footer admin Bài 6: PHP trang tin tức - Tạo chức năng đăng nhập, đăng xuất admin Bài 7: PHP trang tin tức - Xây dựng sidebar, content và phân trang admin Bài 8: PHP trang tin tức - Các chức năng chuyên mục admin Bài 9: PHP trang tin tức - Các chức năng chuyên mục admin (tiếp theo) Bài 10: PHP trang tin tức - Các chức năng của hình ảnh admin Bài 11: PHP trang tin tức - Các chức năng của hình ảnh admin (tiếp theo) Bài 12: PHP trang tin tức - Các chức năng của bài viết admin Bài 13: PHP trang tin tức - Các chức năng của bài viết admin (tiếp theo) Bài 14: PHP trang tin tức - Các chức năng cài đặt admin Bài 15: PHP trang tin tức - Các chức năng của tài khoản admin Bài 16: PHP trang tin tức - Các chức năng của tài khoản admin (tiếp theo) Bài 17: PHP trang tin tức - Các chức năng của profile admin Bài 18: PHP trang tin tức - Các chức năng của profile admin (tiếp theo) Bài 19: PHP trang tin tức - Xây dựng dashboard admin và fix bug Bài 20: PHP trang tin tức - Cấu trúc folder client Bài 21: PHP trang tin tức - Kết nối database và rewrite url Bài 22: PHP trang tin tức - Xây dựng header và footer client Bài 23: PHP trang tin tức - Xây dựng layout client Bài 24: PHP trang tin tức - Hiển thị danh sách bài viết mới nhất Bài 25: PHP trang tin tức - Hiển thị danh sách bài viết chuyên mục Bài 26: PHP trang tin tức - Hiển thị nội dung bài viết Bài 27: PHP trang tin tức - Xây dựng chức năng tìm kiếm Bài 28: PHP trang tin tức - Xây dựng các trang con và clear source (End)
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Bài 15: PHP trang tin tức - Các chức năng của tài khoản admin

Xin chào tất cả các bạn, chào mừng các bạn đã quay trở lại với Freetuts trong series hướng dẫn xây dựng trang tin tức bằng PHP. Ở trong bài trước, chúng ta đã hoàn thiện các chức năng của bài viết, hôm nay mình sẽ hướng dẫn các bạn xây dựng các chức năng của quản lý tài khoản. Bắt tay vào việc thôi nào!

1. Khái quát

Chức năng này dùng để quản lý tài khoản của các tác giả. Gồm có các chức năng sau:

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
  • Thêm tài khoản
  • Mở/khoá tài khoản
  • Xoá tài khoản

Các bạn thắc mắc vì sao không có chức năng chỉnh sửa phải không? Theo mình các chức năng "nhạy cảm" như thế này thì khi nào tác giả quên mật khẩu, cứ liên hệ admin vào database mà lấy :v

2. Lưu ý và chỉnh sửa

Ở trong bài 6, chúng ta đã tạo table accounts, nên trong bài này chúng ta sẽ không cần tạo nữa.

Các bạn để ý bên phần sidebar mình thiếu mất một item của quản lý tài khoản, các bạn mở file admin/templates/sidebar.php lên và chèn thêm đoạn code này tiếp tục ở dưới các item trong phần sidebar của admin:

<a class="list-group-item" href="' . $_DOMAIN . 'accounts">
	<span class="glyphicon glyphicon-lock"></span> Tài khoản
</a>
Reload lại các bạn sẽ được kết quả như thế này:php trang tin tuc cac chuc nang cua tai khoan admin ket qua chinh sua code jpg

Tiếp theo các bạn mở file admin/includes/footer.php lên và thêm đoạn code này tiếp bên dưới phần active item:

else if ($tab == 'accounts')
{
	echo '<script>$(".sidebar ul a:eq(7)").addClass("active");</script>';
}

Sau đó, các bạn mở file admin/templates/content.php và thêm cho mình điều kiện này tiếp bên dưới các điều kiện phân trang:

else if ($tab == 'accounts')
{
	// Hiển thị template tài khoản
	require_once 'templates/accounts.php';
}
Nếu load trang mà thấy lỗi thì đừng lo lắng nhé, do chúng ta chưa tạo file admin/templates/accounts.php

3. Phân trang tài khoản

Ở trong chức năng này, ta sẽ có hai trang:

  • Trang hiển thị danh sách tài khoản (http://domain.com/admin/accounts)
  • Trang thêm tài khoản (http://domain.com/admin/accounts/add)

Các bạn tạo cho mình file admin/templates/accounts.php và dán nội dung này vào:

<?php
 
// Nếu đăng nhập
if ($user)
{
    // Nếu tài khoản là tác giả
    if ($data_user['position'] == 0)
    {
        echo '<div class="alert alert-danger">Bạn không có đủ quyền để vào trang này.</div>';
    } 
    // Ngược lại tài khoản là admin
    else if ($data_user['position'] == 1) 
    {
        echo '<h3>Tài khoản</h3>';
        // Lấy tham số ac
        if (isset($_GET['ac']))
        {
            $ac = trim(addslashes(htmlspecialchars($_GET['ac'])));
        }
        else
        {
            $ac = '';
        }
     
        // Lấy tham số id
        if (isset($_GET['id']))
        {
            $id = trim(addslashes(htmlspecialchars($_GET['id'])));
        }
        else
        {
            $id = '';
        }
     
        // Nếu có tham số ac
        if ($ac != '') 
        {
            // Trang thêm tài khoản
            if ($ac == 'add')
            {
                // Dãy nút của thêm tài khoản
                echo
                '
                    <a href="' . $_DOMAIN . 'accounts" class="btn btn-default">
                        <span class="glyphicon glyphicon-arrow-left"></span> Trở về
                    </a> 
                ';
     
                // Content thêm tài khoản
            }         
        }
        // Ngược lại không có tham số ac
        // Trang danh sách tài khoản
        else
        {
            // Dãy nút của danh sách tài khoản
            echo
            '
                <a href="' . $_DOMAIN . 'accounts/add" class="btn btn-default">
                    <span class="glyphicon glyphicon-plus"></span> Thêm
                </a> 
                <a href="' . $_DOMAIN . 'accounts" class="btn btn-default">
                    <span class="glyphicon glyphicon-repeat"></span> Reload
                </a>
                <a class="btn btn-warning" id="lock_acc_list">
                    <span class="glyphicon glyphicon-lock"></span> khoá
                </a>
                <a class="btn btn-success" id="unlock_acc_list">
                    <span class="glyphicon glyphicon-lock"></span> Mở khoá
                </a> 
                <a class="btn btn-danger" id="del_acc_list">
                    <span class="glyphicon glyphicon-trash"></span> Xoá
                </a> 
            ';
     
            // Content danh sách tài khoản
        }
    }
}
// Ngược lại chưa đăng nhập
else
{
    new Redirect($_DOMAIN); // Trở về trang index
}
 
?>

4. Thêm tài khoản

Truy cập đường dẫn http://domain.com/admin/accounts/add để bắt đầu làm nhé!

Xây dựng template

Mở file admin/templates/accounts.php và dán đoạn code này bên dưới dòng // Content thêm tài khoản:

echo '
    <p class="form-add-acc">
        <form method="POST" id="formAddAcc" onsubmit="return false;">
            <div class="form-group">
                <label>Tên đăng nhập</label>
                <input type="text" class="form-control title" id="un_add_acc">
            </div>
            <div class="form-group">
                <label>Mật khẩu</label>
                <input type="password" class="form-control title" id="pw_add_acc">
            </div>
            <div class="form-group">
                <label>Nhập lại mật khẩu</label>
                <input type="password" class="form-control title" id="repw_add_acc">
            </div>
            <div class="form-group">
                <button type="submit" class="btn btn-primary">Thêm</button>
            </div>
            <div class="alert alert-danger hidden"></div>
        </form>
    </p>
';

Viết Ajax gửi dữ liệu

Các bạn mở file admin/js/form.js và chèn tiếp đoạn code này bên dưới:

// Thêm tài khoản
$('#formAddAcc button').on('click', function() {
	$un_add_acc = $('#un_add_acc').val();
	$pw_add_acc = $('#pw_add_acc').val();
	$repw_add_acc = $('#repw_add_acc').val();

	if ($un_add_acc == '' || $pw_add_acc == '' || $repw_add_acc == '')
	{
		$('#formAddAcc .alert').removeClass('hidden');
		$('#formAddAcc .alert').html('Vui lòng điền đầy đủ thông tin.');
	}
	else
	{
		$.ajax({
			url : $_DOMAIN + 'accounts.php',
			type : 'POST',
			data : {
				un_add_acc: $un_add_acc,
				pw_add_acc : $pw_add_acc,
				repw_add_acc : $repw_add_acc,
				action : 'add_acc'
			}, success : function(data) {
				$('#formAddAcc .alert').html(data);
			}, error : function() {
				$('#formAddAcc .alert').removeClass('hidden');
				$('#formAddAcc .alert').html('Đã có lỗi xảy ra, hãy thử lại.');
			}  
		});
	}
});

Viết PHP xử lý dữ liệu

Tạo cho mình file admin/accounts.php và copy nội dung này vào:

<?php

// Kết nối database và thông tin chung
require_once 'core/init.php';

// Nếu đăng nhập
if ($user) 
{
	// Nếu tồn tại POST action
	if (isset($_POST['action']))
	{
		// Xử lý POST action
		$action = trim(addslashes(htmlspecialchars($_POST['action'])));

		// Thêm tài khoản
		if ($action == 'add_acc') 
		{
			// Xử lý các giá trị
			$un_add_acc = trim(htmlspecialchars(addslashes($_POST['un_add_acc'])));
			$pw_add_acc = trim(htmlspecialchars(addslashes($_POST['pw_add_acc'])));
			$repw_add_acc = trim(htmlspecialchars(addslashes($_POST['repw_add_acc'])));

			// Các biến xử lý thông báo
			$show_alert = '<script>$("#formAddAcc .alert").removeClass("hidden");</script>';
			$hide_alert = '<script>$("#formAddAcc .alert").addClass("hidden");</script>';
			$success = '<script>$("#formAddAcc .alert").attr("class", "alert alert-success");</script>';

			// Kiểm tra tên đăng nhập
			$sql_check_un_exist = "SELECT username FROM accounts WHERE username = '$un_add_acc'";

			if ($un_add_acc == '' || $pw_add_acc == '' || $repw_add_acc == '') {
				echo $show_alert.'Vui lòng điền đầy đủ thông tin.';
			} else if (strlen($un_add_acc) < 6 || strlen($un_add_acc) > 32) {
				echo $show_alert.'Tên đăng nhập nằm trong khoảng 6-32 ký tự.';
			} else if (preg_match('/\W/', $un_add_acc)) {
				echo $show_alert.'Tên đăng nhập không chứa kí tự đậc biệt và khoảng trắng.';
			} else if ($db->num_rows($sql_check_un_exist)) {
				echo $show_alert.'Tên đăng nhập đã tồn tại.';
			} else if (strlen($pw_add_acc) < 6) {
				echo $show_alert.'Mật khẩu quá ngắn.';
			} else if ($pw_add_acc != $repw_add_acc) {
				echo $show_alert.'Mật khẩu nhập lại không khớp.';
			} else {
				$pw_add_acc = md5($pw_add_acc);
				$sql_add_acc = "INSERT INTO accounts VALUES (
					'',
					'$un_add_acc',
					'$pw_add_acc',
					'',
					'',
					'0',
					'0',
					'$date_current',
					'',
					'',
					'',
					'',
					'',
					''
				)";
				$db->query($sql_add_acc);
				$db->close();

				echo $show_alert.$success.'Thêm tài khoản thành công.';
				new Redirect($_DOMAIN.'accounts'); // Trở về trang danh sách tài khoản
			}
		}
		// Mở tài khoản
		// Khoá tài khoản
		// Xoá tài khoản
	}
	else
	{
		new Redirect($_DOMAIN); // Trở về trang index
	}
}
else
{
	new Redirect($_DOMAIN); // Trở về trang index
}

5. Danh sách tài khoản

Các bạn mở file admin/templates/accounts.php lên và chèn đoạn code này bên dưới dòng // Content danh sách tài khoản:

$sql_get_list_acc = "SELECT * FROM accounts WHERE position = '1' ORDER BY id_acc DESC";
// Nếu có tài khoản
if ($db->num_rows($sql_get_list_acc))
{
    echo 
    '
        <br><br>
        <div class="table-responsive">
            <table class="table table-striped list" id="list_acc">
                <tr>
                    <td><input type="checkbox"></td>
                    <td><strong>ID</strong></td>
                    <td><strong>Tên đăng nhập</strong></td>
                    <td><strong>Trạng thái</strong></td>
                    <td><strong>Tools</strong></td>
                </tr>
    ';

    // In danh sách tài khoản
    foreach ($db->fetch_assoc($sql_get_list_acc, 0) as $key => $data_acc)
    {
        // Trạng thái tài khoản
        if ($data_acc['status'] == 0) {
            $stt_acc = '<label class="label label-success">Hoạt động</label>';
        } else if ($data_acc['status'] == 1) {
            $stt_acc = '<label class="label label-warning">Khoá</label>';
        }

        echo 
        '
            <tr>
                <td><input type="checkbox" name="id_acc[]" value="' . $data_acc['id_acc'] .'"></td>
                <td>' . $data_acc['id_acc'] .'</td>
                <td>' . $data_acc['username'] . '</td>
                <td>' . $stt_acc . '</td>
                <td>
                    <a data-id="' . $data_acc['id_acc'] . '" class="btn btn-sm btn-warning lock-acc-list">
                        <span class="glyphicon glyphicon-lock"></span>
                    </a>
                    <a data-id="' . $data_acc['id_acc'] . '" class="btn btn-sm btn-success unlock-acc-list">
                        <span class="glyphicon glyphicon-lock"></span>
                    </a>
                    <a data-id="' . $data_acc['id_acc'] . '" class="btn btn-sm btn-danger del-acc-list">
                        <span class="glyphicon glyphicon-trash"></span>
                    </a>
                </td>
            </tr>
        ';
    }

    echo 
    '
            </table>
        </div>
    ';
}
// Nếu không có tài khoản
else
{
    echo '<br><br><div class="alert alert-info">Chưa có tài khoản nào.</div>';
}
Giờ các bạn chạy lại xem thành quả nhé!

6. Lời kết

Ở bài này chúng ta đã viết xong chức năng thêm tài khoản và hiển thị danh sách của chúng. Ở bài sau, chúng ta đã hoàn thành nốt các chức năng còn lại của tài khoản. Nếu các bạn có thắc mắc gì hãy comment bên dưới hoặc đăng bên trên group kèm link bài viết để được hỗ trợ nhanh nhất. Cảm ơn các bạn đã theo dõi, chúc các bạn thành công!

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top