Nguyên tắc "chữa bệnh" của anh là, trước tiên, là xác định rõ hiện tượng (biểu hiện) của căn bệnh, sau đó phán đoán xem căn bệnh có thể xuất phát từ đâu, và những quá trình gì làm căn bệnh đó xuất hiện.
Sau đó, thì ... mới tìm cách chữa.
1 - Về biểu hiện, thì là khi sử dụng "getlastpost"
2 - Về phán đoán nguồn bệnh:
Khả năng là khi Nam cài đặt IBF và thêm các hacks, một phần nào đó bị conflict, làm cho function getlastpost không hoạt động được.
Anh cũng không dùng IBF nên không thể nói chính xác cụ thể bệnh thế nào, nhưng mà, bug có thể xuất hiện sau khi Nam thêm phần "Trả lời nhanh" vào (đoán thế thôi nhé), bởi vì, đáng ra khi vào bài viết, trang web sẽ hiện ra tại vị trí có bài mới nhất của 1 chủ đề (newpost). Nhưng vào bài viết ở đây, vị trí trang web lập tức đi xuống phần dưới cùng, cho "Trả lời nhanh".
Ở trang web của IBF (
http://forums.invisionboard.com/) không hề bị lỗi này.
Thử kiểm tra (hoặc thử remove cái trả lời nhanh đi xem có đúng ko nhé).
3- Phân tích các quá trình để thực hiện lệnh "getlastpost"
Về mặt kỹ thuật, trước tiên, khi vào
http://pdp.lop9e.net
- browser sẽ đọc
index.php, để chạy chương trình
- lệnh
?act=ST
trong index.php, dòng 186 đến dòng 273 (theo IBFORUMS v1 Final) là đoạn để thực hiện chức năng "ACT"
(bắt đầu từ:
if ($ibforums->input['act'] != 'Login')
dòng 232:
"ST" => "Topics",
dòng 273:
require $root_path."sources/".$choice[ $ibforums->input['act'] ].".php";
Chức năng ST sẽ gọi file Topics.php trong sources
- lệnh
&f=7&t=126&view=getlastpost
Vào Topics.php, dòng 186-191:
Mã:
else if ($ibforums->input['view'] == 'getlastpost')
{
$this->return_last_post();
}
Khi view=getlastpost thì chương trình sẽ
return_last_post();
dòng 1082 -1109 là
function return_last_post()
Theo nguyên tắc, khi chạy hàm return_last_post, trong địa chỉ của trang web,
&view=getlastpostsẽ phải chuyển thành
&st=0&#entry218811 (số 0 và 218811 chỉ là ví dụ)
Dòng 1106:
Mã:
$std->boink_it($ibforums->base_url."&act=ST&f=".$this->topic['forum_id']."&t=".$this->topic['tid']."&st=$st&"."#entry".$post['pid']);
Tuy nhiên, trong link của Nam, URL không hề thay đổi. Nam nên kiểm tra lại function return_last_post, các điều kiện của hàm này, và các điều kiện để thực hiện hàm này, + kiểm tra xem có conflict với hàm nào khác không, đặc biệt là
$st và
$std
Anh không cài + không sử dụng IBF, nên xem qua code, bây giờ chỉ có thể nghĩ đến thế. Nam thử kiểm tra các phần trên xem.
Goodluck!
Còn một các khác nữa, đơn giản nhất
bỏ phéng hàm "getlastpost" đi, vào đúng topic ẫn được mà, chỉ có cái là nó không hiện ra ở vị trí của bài cuối cùng ngay thôi.
Cách này gọi là ... bị ung thư chỗ nào, cắt phéng nó đi, khỏi phải chữa
chỉ có chỗ nào thật cần thiết, quan trọng thì chữa thôi.