09/10/2018, 18:23
how to write a forum in php
Bạn nào có tài liệu hướng dẫn viết forum bằng php ,mysql,apache ko ?. gửi lên cho mình nhé.
Xin cám ơn rất nhiều.
Xin cám ơn rất nhiều.
Bài liên quan
Hiện nay theo mình thì chưa hề có tài liệu nào về vấn đề này cả,do đó bạn tự nghiên cứu thì sẽ hay hơn,theo mình thì bạn ko nên đọc code của VBB hay IBF gì cả,mới bắt đầu thì ta nên kiếm mấy cái forum khác về mà đọc,nó simple mà cũng dể hiểu nữa
Sau đó khi thành pro rùi thì lôi cái VBB ra quất
1/ Về cơ cấu: 1 forum thường gồm 2 phần: phần dành cho users và phần dành riêng cho việc quản lý: tạo các forum con trong forum lớn, tạo các cấp độ user. Như vậy khi viết forum, bạn cần viết hai phần.
2/ Hệ thống phân quyền: user của một forum thường được chia thành nhiều cấp độ: guest, user bình thường, mod, super mod, admin
- guest: tất cả mọi người truy cập vào forum mà chưa login (kể cả user đã đăng ký). Ở cấp độ này, người dùng chỉ được phép đọc.
user bình thường: được phép viết bài, edit bài viết của mình
mod: mỗi forum con trong một forum lớn (ví dụ như forum Internet & Web trong forum diendantinhoc này) cần một đội ngũ moderator. Mod được quyền hạn cao nhất trong forum của mình: sửa bài của user khác, xóa bài, chuyển bài đến forum khác hay thread (topic) khác.
super mod: đây là nhóm có quyền hạn cao hơn mod. Nhóm này có quyền hạn trên toàn bộ các forum con trong một forum lớn nghĩa là có thể sửa bài viết, xóa bài viết, chuyển bài trong phạm vi toàn forum
admin: đây là nhóm có quyền hạn cao nhất, và đồng thời được truy cập vào các trang dành riêng cho việc quản lý forum, user
Có nhiều phương pháp viết code cho phần phân quyền, tôi lấy ví dụ forum của bạn gồm 3 forum nhỏ: Phần mềm, Phần cứng, và Dành riêng cho Mods
như vậy, khi trang này được load lên, bạn cần phải kiểm tra level của user hiện hành (có từ mod trở lên hay không) để hiển thị phần forum "Dành riêng cho mods". Đoạn code sẽ trông như sau:
------------------------
Hiển thị forum "Phần mềm"
Hiển thị forum "Phần cứng"
Nếu level của user >=modlevel thì Hiển thị forum "Dành riêng cho Mods"
--------------------------
Như vậy, nếu user ở level bình thường vào forum, họ sẽ không thấy được room dành riêng cho mod.
Bạn cũng thực hiện tương tự như vậy cho việc hiển thị các nút Sửa bài, Xóa bài, Post bài...
-------------------
Hiển thị bài post thứ nhất trong topic
Nếu user_hiện_tại = user_post_bài hoặc level_user_hiện_tại = Mod_của_forum_này hoặc level_user_hiện_tại=supermodlevel hoặc level_user_hiện_tại=adminlevel thì Hiển thị nút Sửa bài; Hiển thị nút Xóa bài
Nếu user_logedin = true thì hiển thị nút Reply; hiển thị nút New Topic
Hiển thị bài post thứ hai
Lặp lại phần kiểm tra trên
..............
----------------------------
Ở trên là một vài ví dụ về việc phân quyền và việc kiểm tra quyền hạn sẽ thực hiện ngay trên trang.
3/ Áp dụng Session : bạn không thể bắt user của bạn nhập account và password mỗi khi họ muốn post bài, sửa bài, xóa bài....User của một forum chỉ login một lần duy nhất và sau đó, họ có thể truy cập từ trang này sang trang khác. Vậy làm sao bạn có thể biết user đã login hay chưa khi họ đang ở tại một trang nào đó trong forum của bạn
Một trong các phương pháp quản lý trạng thái của user là sử dụng Session. Nghĩa là sau khi họ login, bạn cần ghi lại "thông tin về user này" vào một biến trạng thái nào đó, và khi họ đang ở trên một trang bất kỳ, bạn có thể truy cập vào biến trạng thái để biết được user có login chưa.
Code của trang login có thể như sau:
----------------------------
User login
Kiểm tra username và password
Nếu OK Ghi lại thông tin về user (như user_level, username) vào Session
Nếu not OK, trả về trang login
---------------------------
và ở tại một trang nào đó, giả sử user của bạn nhấn lên nút "Post bài" bạn có thể kiểm tra như sau:
-----------------------------
Lấy giá trị user_logged từ Session
Nếu user_logged="OK" load trang post_bài.php
Ngược lại load trang login.php và hiển thị thông báo: Bạn cần đăng nhập
-----------------------------
Phân quyền và sử dụng Session là 2 trong các phần quan trọng nhất trong việc viết code cho forum, bạn cần tìm hiểu kỹ về Session và các phương pháp quản lý user_level.
Ngoài ra, các vấn đề còn lại liên quan nhiều đến việc tổ chức database cho các bài post trong forum. Lấy ví dụ forum của bạn gồm 2 forum con (2 category) là Phần mềm và Phần cứng. Như vậy bạn cần một table trong database cho category:
--------------
Category
--------------
CategoryID
CategoryName
--------------
chẳng hạn:
----------------------------
CategoryID | CategoryName |
----------------------------
01---------|Phan Mem----- |
----------------------------
02---------|Phan Cung---- |
----------------------------
Bây giờ, trong mỗi category chắc chắn sẽ có nhiều topic và trong mỗi topic sẽ có nhiều Reply. Như vậy bạn cần 2 table: một cho Topic và một cho Reply
----------------------------
Topic
-----------------
TopicID
TopicSubject
TopicContent
Poster
postedDateTime
CategoryID
------------------
và Reply
--------------
ReplyID
ReplyContent
replyPoster
replyDateTime
TopicID
--------------
Và rồi khi bạn load trang home, bạn cần hiển thị 2 forum, trong mỗi forum là các topic của forum đó (dựa vào CategoryID của mỗi topic)
--------------------------------------------------------
Hiển thị Forum Phan Mem
Lấy các topic trong table Topic mà có CategoryID='01'
Liệt kê các topicSubject cùng với một link để đến trang xem
Hiển thị Forum Phan Cung
Lấy các topic trong table Topic mà có CategoryID='02'
Liệt kê các topic Subject cùng với link để sang trang view
-------------------------------------------------------
Và khi user click lên một topic nào đó, bạn sẽ hiển thị trang view cho topic đó cùng với các Reply của topic đó
------------------------------------------------------
ID=ID_trong_link (thường dùng $_GET)
Lấy tất cả các reply trong table Reply mà có TopicID=ID
Hiển thị Content của từng reply
-----------------------------------------------------
Đó là phần dành cho user xem bài, post bài, ....
Bên cạnh đó, bạn cũng cần phải viết code cho phần admin. Phần này bao gồm việc quản lý user, quản lý bài post tổng quát, quản lý cơ cấu các forum (như thêm category, thêm các chức năng) thông qua database
Nhìn chung thì việc viết code cho forum cũng giống như viết code cho các trang web có liên quan đến cơ sở dữ liệu như e-commercial, shopping oline...Bạn cần tìm hiểu về thiết kế database, về hệ thống phân quyền, và về Session, cookies
Mời bạn ghé thăm trang http://www.programming.f2fgroup.net
Đây là một dạng forum đơn giản mà tôi viết. Vì tính đơn giản của forum này, tôi không viết phần phân quyền nhưng cũng khá đầy đủ các chức năng khác.
Nếu bạn muốn, tôi sẽ share code cho bạn