You are on page 1of 64

1.

Cấu hình Joomla để gửi/nhận mail với GMail


Thursday, 02 July 2009 08:45

Việc cấu hình Joomla để cho phép gửi/nhận mail


(email) thông qua tài khoản GMail hay một tài
khoản mail của một hãng bất kỳ có sử dụng giao
thức bảo mật SSL/TLS đã được cộng đồng Joomla
đề cập và bàn tán nhiều, nhưng phải cho đến phiên
bản Joomla 1.5.12 được phát hành ngày hôm qua
(01/7/2009), tính năng này mới chính thức có mặt trong mục cấu hình Global
Configuration. Và đây thực sự là tin vui đối với các webmaster, vì hiện có khá nhiều
người đang phải sử dụng host free hay những host không hỗ trợ gửi/nhận mail.

Thao tác cấu hình khá đơn


giản.

Đầu tiên các bạn mở trang


quản trị, mở mục "Global
Configuration" và chọn tab
"Server", sau đó tìm phần
"Mail Settings" và cấu hình
như sau:

• Mailer: SMTP Server


• Mail From: Địa chỉ thư
của bạn
• From Name: Tiêu đề
thư
• SMTP Authentication:
Yes
• SMTP Security: SSL
• SMTP Port: 465
• SMTP Username: Your Gmail username
• SMTP Password: Your Gmail password
• SMTP Host: smtp.gmail.com

Chúc các bạn thành công.

Trong trường hợp bạn vừa nâng cấp lên Joomla 1.5.12, có thể phần "Mail Settings"
không xuất hiện đúng như trên thì bạn chỉ cần chỉnh sửa một thông số bất kỳ nào đó, sau
đó nhấn nút [Save] để Joomla! nhận các thông số mới.

Keyword:
• joomla, mail, email, gmail, smtp, ssl, tls, global, configuration, server, username,
password, host
• cấu hình, gửi, nhận, thư

2.Cách trình bày trang Homepage (Frontpage)


Homepage trong Joomla! được cài đặt và thể hiện thông qua một thành phần đặc biệt đó
là com_frontpage. Do vậy trong Joomla! trang homepage còn được gọi là Front Page.
Thông qua trang Front Page bạn có thể trình bày một số cách: dạng blog, dạng kết hợp
blog + chia cột... Với những ai mới làm quen với Joomla, các tham số đi kèm trang
Frontpage như: leading, intro, colums, links... có thể gây khó khăn. Tuy nhiên hi vọng
với một vài bước đơn giản dưới đây bạn hoàn toàn có thể làm chủ Frontpage.

Bước 1: Đăng nhập vào trang quản trị (back-end).


VD: http://vinaora.com/administrator

Bước 2: Vào phần quản lý menu


Theo mặc định, trang Homepage được đặt trong "Main Menu". Mở menu Menus -->
Main Menu --> chọn "Home" và quan sát các tham số tùy chỉnh bên tay phải (mục
"Parameters").

VD bạn thiết lập như hình bên, bạn sẽ có kết quả như dưới đây:
Lưu ý:

Để quản lý các bài viết của trang FrontPage bạn mở menu "Content" --> "Front Page
Manager"

Để có trang Homepage giống như VnExpress (các bài viết được trình bày lần lượt theo
các chủ đề) bạn cần tìm và cài đặt một component chẳng hạn như: D4Ezine, iJoomla...

Một vài câu hỏi liên quan:

• Điều chỉnh trang Frontpage như thế nào?


• Edit trang Frontpage ở đâu?
• Chỉnh cột ở frontpage?
• Chuyển blog content từ 2 sang 1?
• Bố cục Front page (intro, read more)

Keyword: frontpage, front-page, Front Page


3. Quy trình tạo một bài viết trong Joomla!
Content (bài viết) trong Joomla! được tổ chức theo mô hình phân cấp và chỉ gồm 2 mức.
Mức cao nhất: Section (phần/mục), mức tiếp theo: Category (chuyên mục) là mức con
của Section.

Bạn có thể xem sơ đồ dưới đây hoặc hình vẽ mô tả bên cạnh.

|Section|
--------|Category|
-----------------|Content 1|
-----------------|Content 2|

Do vậy để tạo một bài viết chúng ta cần thực hiện tối đa là 3 bước.

• Bước 1. Tạo Section (phần/mục).


• Bước 2: Tạo Category (chuyên mục).
• Bước 3: Tạo Content (bài viết).

Chú ý:

• Khi tạo Website nên định hình và tạo ngay các phần/mục (Section) và các chuyên
mục (Category) tương ứng.
• Joomla! chỉ hỗ trợ phân cấp thành 2 mức như trên. Do vậy nếu muốn chia thành
nhiều mức hơn bạn cần tìm một component hỗ trợ từ site:
http://extensions.joomla.org
Keyword: bài viết, chuyên mục, content, section, category

4. Khắc phục lỗi không thể upload ảnh


Trình quản lý ảnh "Media Manager" của Joomla có một chức năng rất hay: Cho phép
upload nhiều ảnh cùng lúc và hiển thị mức độ % hoàn thành công việc. Tuy nhiên trong
trường hợp nếu như bạn cài đặt phiên bản Flash Player 10 thì chức năng trên sẽ bị vô
hiệu hóa, không có bất cứ một cửa sổ nào xuất hiện khi bạn nhấn vào nút [Browse Files].

Hình 01: Trình upload ảnh mặc định của Joomla không hoạt động khi cài Flash 10
Hình 02: Sử dụng trình upload ảnh đơn giản (upload từng file một)

Lỗi này cũng ảnh hưởng tới tất cả các trình upload ảnh/video/flash có sử dụng công nghệ
Flash chứ không riêng gì Joomla.

Để khắc phục lỗi trên có 2 cách:

• Không cài đặt Flash 10


• Hoặc vào Site > Global Configuration > Media Settings > mục "Enable Flash
Uploader" chọn No
Tắt bỏ trình upload ảnh dựa trên Flash của Joomla

Tham khảo thêm:


• Vấn đề với trình upload
• Lỗi upload ảnh với phiên bản Flash 10
• Những thay đổi về bảo mật trong phiên bản Flash 10

Keyword:
• joomla, upload, flash, 10, media, media settings
• trình upload, ảnh, không hoạt động, vô hiệu hóa, cửa sổ, lỗi

5. Lỗi "session.save_path"
Biến session.save_path được dùng để làm gì?
Trên các Webserver chạy PHP, thông tin về phiên làm việc hiện tại của người sử dụng
thường được lưu vào các file khác nhau và đặt vào một thư mục nào đó. Chẳng hạn:

• thư mục "C:\wamp\tmp", "D:\xampp\tmp"... (đối với hệ thống Windows)


• thư mục "/tmp", "/usr/var/tmp", "/var/lib/php/session"... (đối với hệ thống
Linux)
Thư mục mà Webserver dùng để lưu các phiên làm việc này được khai báo thông qua
biến "session.save_path" và nằm trong file "php.ini" giống như dưới đây:

[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Path to store data


session.save_path = "c:/wamp/tmp"

; Whether to use cookies.


session.use_cookies = 1

; Name of the session (used as cookie name).


session.name = PHPSESSID

; Initialize session on request startup.


session.auto_start = 0
...

Những lỗi có thể xảy ra với biến "session.save_path"


Do biến "session.save_path" được khai báo trong file "php.ini" nên khi cài đặt cũng như
khi sử dụng Joomla! có 2 khả năng lỗi có thể xảy ra:

• Biến "session.save_path" chưa được thiết lập, nghĩa là có giá trị là "None" hoặc
"Not Set"
• Biến "session.save_path" đã được thiết lập là đường dẫn tới một thư mục nào đó,
nhưng bạn lại không có quyền ghi đối với thư mục này - "Unwriteable"

Cách xử lý lỗi
Bước 1: Xác định giá trị hiện tại của biến "session.save_path"

Tạo một file "session.php" có nội dung như sau:

<?php
echo (($sp=ini_get('session.save_path')) ?$sp:( 'none' ) );
?>

Sau đó mở link tới file này. VD: http://vinaora.com/joomla/session.php. Thông tin hiển
thị trên màn hình chính là đường dẫn tới thư mục chứa session của Webserver.
Bước 2: Thiết lập lại giá trị biến "session.save_path"

Đầu tiên tạo một thư mục (hoặc chọn một thư mục) mà bạn có quyền ghi lên nó. Thiết lập
Writeable (nếu là Host Windows) hoặc CHMOD 777 (nếu là Host Linux) cho thư mục
này.

Tạo một file ".htaccess" ở thư mục gốc chứa Joomla của bạn với nội dung sau:

php_value session.save_path "/duong/dan/sesion/moi"

Không phải HOSTING nào cũng cho phép bạn thiết lập lại biến "session.save_path"
bằng file ".htaccess". Trong trường hợp này bạn cần liên hệ trực tiếp với HOSTING và
đề nghị họ thiết lập lại giúp bạn.

Hoặc tạo một file "php.ini" ở thư mục gốc chứa Joomla của bạn với nội dung sau:

session.save_path = "/duong/dan/session/moi"

Nếu bạn đang làm trên LOCALHOST thì chỉ cần mở file php.ini và chỉnh sửa trực tiếp,
sau đó khởi động lại Webserver.
Bạn cũng cần lưu ý: Không phải HOSTING nào cũng cho phép bạn thiết lập lại biến
"session.save_path" bằng file "php.ini". Hoặc bạn phải copy file này tới mọi thư mục.
Trong trường hợp này bạn cần liên hệ trực tiếp với HOSTING và đề nghị họ thiết lập lại
giúp bạn.

Hoặc mở file "configuration.php" và thêm vào đầu file đoạn mã sau:

<?php
ini_set('session.save_path','/duong/dan/session/moi');
?>

Lưu ý chung:
Thay "/duong/dan/session/moi" bằng đường dẫn phù hợp với Host của bạn, chẳng hạn
"D:\www\vinaora.com\tmp"; "/home/vinaora/public_html/tmp",
"/var/www/vinaora.com/public_html/tmp"...

Keyword:
• session, save, path, session.save_path, php, php.ini, htaccess, hosting, localhost,
webserver
• lỗi, biến, biến session, thiết lập, đường dẫn

Câu hỏi liên quan:


• Bị lỗi với biến "session.save_path"?
• Xử lý lỗi "Session save path" như thế nào?

6. Lỗi thiếu bộ nhớ "Allowed memory size of 8388608..."


Quá trình cài đặt hoặc cấu hình một thành phần mở rộng của Joomla như: component,
module, mambot/plugin, template... không phải lúc nào cũng suôn sẻ. Đôi khi do thành
phần mở rộng - extension gồm quá nhiều file + dung lượng lớn + hoặc thao tác cần nhiều
bộ nhớ sẽ gây ra lỗi thiếu bộ nhớ và xuất hiện màn hình thông báo lỗi như sau:

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to


allocate 19456 bytes) in ...

Để khắc phục lỗi này chúng ta cần tăng giá trị giới hạn bộ nhớ PHP.

Giá trị giới hạn bộ nhớ của PHP mặc định là 8M = 8388608 bytes, do đó có thể thay đổi
giá trị này bằng 32M chẳng hạn (bạn hoàn toàn có thể thiết lập nhiều hơn tùy theo dung
lượng RAM hiện có của server)

Cách 1: Dùng file ".htaccess"


• Tạo file ".htaccess" ở thư mục gốc chứa Joomla của bạn với nội dung sau:

php_value memory_limit 32M

Lưu ý: Không phải HOSTING nào cũng cho phép bạn thiết lập lại biến
"session.save_path" bằng file ".htaccess". Trong trường hợp này bạn cần liên hệ trực
tiếp với HOSTING và đề nghị họ thiết lập lại giúp bạn.

Cách 2: Dùng file "php.ini"


• Tạo file "php.ini" với nội dung sau và đặt vào thư mục chứa Joomla

memory_limit = 32M

Nếu bạn đang làm trên LOCALHOST thì chỉ cần mở file php.ini và chỉnh sửa trực tiếp,
sau đó khởi động lại Webserver.

Lưu ý: Không phải HOSTING nào cũng cho phép bạn thiết lập lại biến
"session.save_path" bằng file "php.ini". Hoặc bạn phải copy file này tới mọi thư mục.
Trong trường hợp này bạn cần liên hệ trực tiếp với HOSTING và đề nghị họ thiết lập lại
giúp bạn.

Cách 3: Dùng file "configuration.php"


• Thêm đoạn sau vào đầu file "configuration.php":
<?php
ini_set("memory_limit","32M");
?>

Trong tình huống cài đặt thành phần mở rộng


(extension)
Nếu lỗi này xảy ra khi cài đặt thành phần mở rộng bạn có thể làm như sau:

• Giải nén gói thành phần mở rộng mà bạn cần cài đặt
• Upload lên một thư mục nào đó trên Server.
• Khi cài đặt, chọn cài đặt từ một thư mục chứa thành phần mở rộng (tùy chọn 2)
• Nhấn nút cài đặt

Keyword:
• 8388608, memory, memory_limit, size, fatal, error, bytes
• lỗi, bộ nhớ, giới hạn

Câu hỏi liên quan:


• Bị lỗi bộ nhớ
• Lỗi 8388608 là gì?
• Xử lý lỗi bộ nhớ "8388608" như thế nào?

7. Lỗi đăng nhập vào Joomla có thể do những nguyên nhân nào?
Một số nguyên nhân

1. Do bộ cài đặt Joomla


• Bạn nên cài đặt/nâng cấp lên bản Joomla mới nhất và nhớ backup trước khi thực
hiện
• Đặt câu hỏi tại http://forum.joomla.org/ hoặc http://www.joomlaviet.org/forum/

2. Do Web Server, Hosting


• Hãy chắc chắn rằng Web Server của bạn đang bình thường. Hỏi Hosting xem liệu
gần đây họ có cấu hình lại hay nâng cấp, cập nhật, sửa đổi gì không?
• Khuyến cáo sử dụng phần mềm Web Server: WAMP hoặc XAMPP (gồm:
Apache+MySQL+PHP) nếu bạn đang sử dụng localhost làm Web Serrver
3. Do tường lửa
• Hãy chắc chắn rằng phần mềm tường lửa (Norton , ZoneAlarm ...) mà bạn đang
sử dụng không gây ảnh hưởng cho Joomla. Hãy thử tắt nó đi.

4. Do trình duyệt
• Thử trên các máy khác nhau để kiểm tra xem có phải chỉ mình máy bạn là không
vào được.
• Xóa tất cả cache và cookie của trình duyệt.
• Sử dụng trình duyệt ở chế độ mặc định. Nên tải FireFox 2.0 và chọn cài mới để
thử.

5. Gõ sai mật khẩu


• Hãy cố gắng nhớ lại mật khẩu mà bạn đã dùng.
• Liệu bạn có để bộ gõ tiếng Việt (hoặc một ngoại ngữ khác) trong khi gõ mật khẩu

6. Do gói ngôn ngữ cài đặt


• Có thể gói ngôn ngữ của bạn không chuẩn. Bạn cần tải về gói ngôn ngữ mới nhất
từ http://joomlaviet.org/
• Bạn có thể xóa các gói ngôn ngữ và chỉ giữ lại gói ngôn ngữ tiếng Anh và thử
đăng nhập lại.

7. Do cấu trúc database bị thay đổi


• Một số bản Joomla, đặc biệt là Joomla 1.5 do đang ở giai đoạn beta nên đôi khi
cấu trúc database bị thay đổi (thêm/bớt cột, thay đổi độ rộng...) do vậy cũng ảnh
hưởng đến việc đăng nhập.
• Giải pháp: Bạn chỉ có thể mò mẫm từng bước để xem bảng dữ liệu nào đã bị thay
đổi và đưa vấn đề của mình lên http://forum.joomla.org và
http://joomlaviet.org/forum

8. Do biến session.save_path
• Sẽ chỉ cụ thể sau: http://joomlaportal.ru/content/view/156/53/

Một số giải pháp khác


1. Mở database của bạn bằng phpMyAdmin hoặc một tool khác mà Hosting của bạn
cung cấp.
2. Mở bảng jos_users
3. Tìm bản ghi username=admin và thay password bằng giá trị sau

439581667ef694b60d58f213cccf9503

Đăng nhập lại hệ thống bằng tài khoản: username: admin, password: vinaora

Tham khảo:

• http://www.joomlaviet.org/forum/index.php?topic=955.0
• http://www.joomlaviet.org/forum/index.php?topic=1039.0
• http://forum.joomla.org/index.php/topic,7452.0.html

Mẹo Joomla!
8. Lỗi mất định dạng trong phần "Description" của Docman
Lỗi mất định dạng trong phần "Description" của DOCman xảy ra khi cài đặt phiên bản
Joomla 1.5.x và DOCman v1.4.0 RC3 - 2003-2008. Lỗi này khiến cho toàn bộ phần
"Description" mất các định dạng HTML như: In đậm, in nghiêng, màu chữ, font chữ, căn
chỉnh....

Cách khắc phục:


Tìm đến dòng ~215 của file
administrator/components/com_docman/classes/docman_models.class.php và thêm
dấu comment //

$this->objFormatData->dmdescription = mosHTML::cleanText($objDBDoc-
>dmdescription);

Hoặc thay dòng ~215 của file


administrator/components/com_docman/classes/docman_models.class.php

mosHTML::cleanText($objDBDoc->dmdescription);

Keyword:
• docman, joomla, description, HTML, 1.4.0 RC3, 1.5
• định dạng, mất định dạng

Câu hỏi liên quan:


• Lỗi phần "Description" trong DOCMan?
• Trình soạn thảo (Editor) trong DOCMan không hoạt động
9. Cách xác định đường dẫn tuyệt đối {absolute_path}
Trong một số trường hợp cần xác định đường dẫn tuyệt đối tới một thư mục hoặc file nào
đó. Chẳng hạn, phải xác định đường dẫn tuyệt đối tới thư mục chứa Joomla trên Website
của bạn để điền vào thông số $mosConfig_absolute_path (Joomla 1.0.x) hoặc
$absolute_path (Joomla 1.5.x) trong file "configuration.php", bạn có thể làm như sau:

Tạo một file "info.php" nằm cùng mức với file "configuration.php" có nội dung như
sau:

<?php
$p = getcwd();
echo $p;
?>

hoặc

<?php
$p = dirname(__FILE__);
echo $p;
?>

hoặc

<?php
phpinfo();
?>

Sau đó mở trình duyệt và gõ vào địa chỉ tới file này.

VD: http://yoursite/info.php, http://vinaora.com/joomla/info.php

Trường hợp sử dụng hàm getcwd(), hoặc dirname(__FILE__) đường dẫn sẽ hiển thị
trên màn hình. Còn nếu sử dụng hàm phpinfo() thì tìm thông số SCRIPT_FILENAME
để biết đường dẫn tới file info.php nói trên.

Nếu:

SCRIPT_FILENAME = '/home/vinaora/httpdocs/info.php'

thì

// Trong Joomla 1.0.x


$mosConfig_absolute_path = '/home/vinaora/httpdocs';
$mosConfig_cachepath = '/home/vinaora/httpdocs/cache';

// Trong Joomla 1.5.x


var $absolute_path = '/home/vinaora/httpdocs';
var $log_path = '/home/vinaora/httpdocs/logs';
var $tmp_path = '/home/vinaora/httpdocs/tmp';

Keyword:
• xác định, đường dẫn, tuyệt đối, absolute_path, mosConfig_absolute_path,
configuration.php

Câu hỏi liên quan:


• Làm sao xác định đường dẫn $mosConfig_absolute_path?
• $mosConfig_absolute_path là gì?
• Khai báo biến $mosConfig_absolute_path trong file "configuration.php" như thế
nào?

10. Chỉ hiển thị vùng {mainbody} hay {component} của


một Website Joomla
Để hiển thị vùng {mainbody} hay vùng {component} của một Website Joomla 1.5 mà
không có bất cứ một module nào và cũng không áp dụng định dạng do file CSS quy định
bạn có thể sử dụng mẹo sau:

Thêm "?tmpl=component" hoặc "&tmpl=component" và phía cuối đường link của


một trang bất kỳ mà bạn muốn hiện vùng {mainbody} / {component}.

Thí dụ: Nếu muốn hiển thị vùng {mainbody} / {component} của website
community.joomla.org bạn chỉ cần thêm "?tmpl=component" vào phía cuối của đường
link để có link dạng như sau:

http://community.joomla.org/?tmpl=component.
Vùng {mainbody} / {component} là vùng (P) trong hình trên, nơi sẽ nạp component của
trang.

Trong trường hợp bạn lại không muốn mọi người xem được vùng {mainbody} /
{component} của Website bạn có thể sử dụng đoạn mã sau, đặt vào file .htaccess.

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} tmpl=
RewriteRule ^(.*)$ http://vinaora.com/index.php [F,L]

Chú ý: Thay http://vinaora.com bằng địa chỉ Website của bạn. Và nếu muốn chuyển
hướng về trang chủ thì thay [F,L] bằng [R,L] (F: Fobridden, R: Redirect, L: Last Rule)

Tham khảo thêm:


• How to view just your component in Joomla! 1.5

Keyword:
• chỉ hiển thị, mainbody, component, tmpl, tmpl=component

11. Hack com Search: Bỏ chức năng sắp thứ tự


Để bỏ tính năng sắp thứ tự khi tìm kiếm (một tính năng ít được sử dụng và không cần
thiết) của Joomla! bạn chỉ cần vài phút thực hiện theo hướng dẫn dưới đây:

Đối với Joomla 1.5.x

Tìm file "\components\com_search\views\search\tmpl\default_form.php" --> dòng


~23 và cho đoạn mã vào cặp thẻ chú thích

<!--
<tr>
<td colspan="3">
<label for="ordering">
<?php echo JText::_( 'Ordering' );?>:
</label>
<?php echo $this->lists['ordering'];?>
</td>
</tr>
-->

Đối với Joomla 1.0.x

Tìm file "\components\com_search\search.html.php" --> dòng ~59 và cho đoạn mã


vào cặp thẻ chú thích
<!--
<tr>
<td colspan="3">
<label for="search_ordering">
<?php echo _CMN_ORDERING;?>:
</label>
<?php echo $lists['ordering'];?>
</td>
</tr>
-->

Keyword:
• search, tìm kiếm, ordering

12. Cấm xem vị trí các module trên Template


Theo mặc định, các Website Joomla đều cho phép xem vị trí các module của Template
theo dạng đường dẫn

http://domain/index.php?tp=1 hoặc http://domain/?tp=1

VD: http://joomla.org/?tp=1

Để cấm (vô hiệu hóa) tính năng trên bạn chỉ cần thêm các dòng sau vào file ".htaccess"
(được đặt ở thư mục chứa Joomla - cùng mức với file configuration.php)

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} tp=
RewriteRule ^(.*)$ http://vinaora.com/index.php [F,L]

Dòng 1 & 2 nếu có rồi thì thôi.


Thay http://vinaora.com/index.php = link mà các bạn muốn
F: Fobridden (Còn nếu nếu muốn chuyển hướng về trang chủ thì thay F = R: Redirect)
L: Last rule

Đây cũng là cách để chặn lọc và chuyển hướng các chuỗi không mong muốn.

Hosting phải hỗ trợ file ".htaccess" và mod_rewrite phải được bật

Tham khảo thêm


• http://www.joomlaviet.org/forum/viewtopic.php?f=33&t=5511
• http://www.joomlaviet.org/forum/viewtopic.php?f=5&t=6350
Keyword
• module, vị trí, templae, .htaccess

13. Lỗi mất ký tự tiếng Việt trong tiêu đề Joomla 1.5

Cách khắc phục


• Bước 1: Tìm file [Joomla1.5]/libraries/joomla/filter/filteroutput.php
• Bước 2: Mở file này bằng trình soạn thảo Notepad++ (miễn phí, nhanh, gọn...).
• Bước 3: Save file bằng định dạng UTF-8 Without BOM: cho phép lưu các ký tự
UTF-8 và quan trọng là không có ký tự đánh dấu UTF8 ở đầu file. Xem hình để
rõ hơn

• Bước 4: Tìm đến ~ dòng 87 và chèn thêm 10 dòng mã sau (dòng 88-97):
10 dòng mã cần chèn:

// Hacked by VINAORA.COM
$utf8characters = 'à|a, ả|a, ã|a, á|a, ạ|a, ă|a, ằ|a, ẳ|a, ẵ|a, ắ|a, ặ|
a, â|a, ầ|a, ẩ|a, ẫ|a, ấ|a, ậ|a, đ|d, è|e, ẻ|e, ẽ|e, é|e, ẹ|e, ê|e, ề|
e, ể|e, ễ|e, ế|e, ệ|e, ì|i, ỉ|i, ĩ|i, í|i, ị|i, ò|o, ỏ|o, õ|o, ó|o, ọ|
o, ô|o, ồ|o, ổ|o, ỗ|o, ố|o, ộ|o, ơ|o, ờ|o, ở|o, ỡ|o, ớ|o, ợ|o, ù|u, ủ|
u, ũ|u, ú|u, ụ|u, ư|u, ừ|u, ử|u, ữ|u, ứ|u, ự|u, ỳ|y, ỷ|y, ỹ|y, ý|y, ỵ|
y, À|A, Ả|A, Ã|A, Á|A, Ạ|A, Ă|A, Ằ|A, Ẳ|A, Ẵ|A, Ắ|A, Ặ|A, Â|A, Ầ|A, Ẩ|
A, Ẫ|A, Ấ|A, Ậ|A, Đ|D, È|E, Ẻ|E, Ẽ|E, É|E, Ẹ|E, Ê|E, Ề|E, Ể|E, Ễ|E, Ế|
E, Ệ|E, Ì|I, Ỉ|I, Ĩ|I, Í|I, Ị|I, Ò|O, Ỏ|O, Õ|O, Ó|O, Ọ|O, Ô|O, Ồ|O, Ổ|
O, Ỗ|O, Ố|O, Ộ|O, Ơ|O, Ờ|O, Ở|O, Ỡ|O, Ớ|O, Ợ|O, Ù|U, Ủ|U, Ũ|U, Ú|U, Ụ|
U, Ư|U, Ừ|U, Ử|U, Ữ|U, Ứ|U, Ự|U, Ỳ|Y, Ỷ|Y, Ỹ|Y, Ý|Y, Ỵ|Y, "|, &|';
$replacements = array();
$items = explode(',', $utf8characters);
foreach ($items as $item) {
@list($src, $dst) = explode('|', trim($item));
$replacements[trim($src)] = trim($dst);
}
$str = trim(strtr($str, $replacements));
// End Hack

• Bước 5: Save file lần cuối và kiểm tra

Tham khảo thêm


• Joomla 1.5 Stable và vấn đề tiêu đề tiếng Việt utf-8

Keyword:
• joomla, lỗi, tiếng Việt, ký tự, UTF-8, utf8
14. Thay đổi cách hiển thị tiêu đề bài viết trong Joomla
Tiêu đề của bài viết trong Joomla có thể ở các dạng sau:

• Dạng 1: Tên site - Tên bài viết (VD: VINAORA - Hướng dẫn cài đặt Joomla
1.5)
• Dạng 2: Tên bài viết - Tên site (VD: Hướng dẫn cài đặt Joomla 1.5 -
VINAORA)
• Dạng 3: Tên bài viết (VD: Hướng dẫn cài đặt Joomla 1.5)

Nếu bạn đang sử dụng

Joomla 1.5
Tìm đến file [Joomla1.5]\libraries\joomla\document\html\renderer\head.php ~ dòng
61

$strHtml = $tab . '<title>' . htmlspecialchars($document->getTitle()) .


'</title>' . $lnEnd;

Nếu muốn ở dạng 1 thay bằng

$strHtml = $tab . '<title>' . $mainframe->getCfg('sitename') . ' - ' .


htmlspecialchars($document->getTitle()) . '</title>' . $lnEnd; // dạng 1

Nếu muốn ở dạng 2 thay bằng

$strHtml = $tab . '<title>' . htmlspecialchars($document->getTitle()) .


' - ' . $mainframe->getCfg('sitename') . '</title>' . $lnEnd; // dạng 2

Nếu muốn ở dạng 3 thay bằng

$strHtml = $tab . '<title>' . htmlspecialchars($document->getTitle()) .


'</title>' . $lnEnd; // dạng 3

Joomla 1.0.x
Tìm đến file [Joomla1.0]/includes/joomla.php ~ dòng 507

$this->_head['title'] = $title ? $GLOBALS['mosConfig_sitename'] . ' -


'. $title : $GLOBALS['mosConfig_sitename'];

Nếu muốn ở dạng 1 thay bằng

$this->_head['title'] = $title ? $title. ' - '.


$GLOBALS['mosConfig_sitename'] : $GLOBALS['mosConfig_sitename']; //
dạng 1
Nếu muốn ở dạng 2 thay bằng

$this->_head['title'] = $title ? $GLOBALS['mosConfig_sitename'] . ' - '


. $title : $GLOBALS['mosConfig_sitename']; // dạng 2

Nếu muốn ở dạng 3 thay bằng

$this->_head['title'] = $title ? $GLOBALS['mosConfig_sitename'] :


$GLOBALS['mosConfig_sitename']; // dạng 3

Tham khảo thêm:


• Thay đổi cách hiển thị của Joomla Title:
http://www.joomlaviet.org/forum/index.php/topic,4428.0.html

Keyword:
• Joomla, joomla 1.5, joomla 1.0, title, tiêu đề, bài viết, head

15. Tạo đường dẫn tắt tới trang quản trị


Thông thường để truy cập vào trang quản trị của Joomla! chúng ta sử dụng đường dẫn:
http://your-domain/administrator

VD: http://vinaora.com/administrator

Để không phải gõ một cụm dài "administrator" phía sau domain, ta có thể tạo một
đường dẫn tắt chẳng hạn

http://vinaora.com/123 -> và được chuyển hướng tới -->


http://vinaora.com/administrator

Cách thực hiện như sau:


Tạo file .htaccess nằm ở thư mục gốc chứa Joomla! (hoặc thêm vào phía cuối file này
nếu đã có) nội dung sau:

Redirect /123 http://your-domain/administrator

Chú ý:
Nếu Website của bạn có dạng http://you-domain/joomla (VD: http://vinaora.com/joomla)
thì bạn cần gõ nội dung sau:
Redirect /joomla/123 http://your-domain/administrator

Cảnh báo:
Chỉ áp dụng cho Website chạy trên Apache và có hỗ trợ file .htaccess

16. Bỏ dòng chữ "Welcome to the Frontpage"


Bỏ dòng chữ "Welcome to the Frontpage" trong Joomla
1.5

Đăng nhập vào trang quản trị (back-end)


VD: http://vinaora.com/administrator

Mở menu chứa Front Page


Mở menu Menus --> Main Menu --> chọn mục Parameters - System bên tay phải.

Tìm dòng "Show Page Title" chọn "No"

Bỏ dòng chữ "Welcome to the Frontpage" trong Joomla


1.0.x

Đăng nhập vào trang quản trị (back-end)


VD: http://vinaora.com/administrator

Mở menu chứa Front Page


Mở menu Menus --> Main Menu --> chọn mục Parameters bên tay phải.

Tìm dòng "Page Title" chọn "Hide"

Các câu hỏi liên quan:

• Làm sao xóa bỏ dòng "Welcome to the Frontpage"?


• Làm sao xóa "Welcome to the Frontpage"?

Keyword: welcome, frontpage, Frontpage

17. Bỏ dòng "Tác giả" / "Ngày đăng" khỏi các bài viết
Bước 1: Đăng nhập vào trang quản trị (back-end)
VD: http://vinaora.com/administrator

Bước 2: Thiết lập


Mở menu Content - Article Manager.
Nhấn vào nút "Preferences" ở góc trên bên phải.

Trong hộp thoại xuất hiện tìm đến mục "Author Name" (tên tác giả), "Created Date
and Time" (ngày giờ tạo bài viết), "Modified Date and Time" (ngày giờ chỉnh sửa bài
viết) và chọn "Hide" để ẩn, ngược lại chọn "Show".

Tham khảo thêm:

• http://siteground.com
18. Tên template, đường dẫn, và Base URL trong
Joomla 1.5
Template trong Joomla! 1.5 thường được lưu trong thư mục "\templates" với cấu trúc
như sau:

\templates
----------\{tên_template}
------------------------\index.php File chính của
template
------------------------\templateDetails.xml Thông tin về
template
------------------------\template_thumbnail.png Ảnh chụp
template
------------------------\params.ini Các tham số hỗ trợ
------------------------\index.html Chống liệt kê thư
mục
------------------------\favicon.ico Biểu tượng nhỏ
hiện trong thanh Address

------------------------\CSS\template.css File CSS chính


----------------------------\template_rtl.css Cho các site có
chữ đọc từ phải sang trái

------------------------\images Thư mục


ảnh dùng cho template

Mở file "index.php" và gõ các dòng mã sau để kiểm tra

Tên template đang dùng

<?php echo $mainframe->getCfg('sitename');?>

Địa chỉ Email của Administrator

<?php echo $mainframe->getCfg('mailfrom');?>

Thư mục chứa template

<?php echo $this->template?>

Base URL

<?php echo JURI::base();?>

19. Xem vị trí các module trên template


Để xem vị trí của các module trên template bạn chỉ cần thêm đoạn "?tp=1" hoặc
"index.php?tp=1" sau vào phía sau tên domain của bạn.

VD:

• http://vinaora.com/joomla/index.php?tp=1
• http://joomla.org?tp=1

20. Thay template không cần đăng nhập


Đôi khi bạn cần kiểm tra một Website có làm việc tốt với template nào đó không mà
không cần phải vào trang quản trị bạn có thể sử dụng mẹos sau:

Đối với Joomla 1.0.x


Thêm phần sau "?jos_change_template=new_template_name" vào phía sau địa chỉ
Website của bạn.

VD:

• http://joomla.org/?jos_change_template=rhuk_solarflare_ii
• http://joomla.org/?jos_change_template=madeyourweb

Lưu ý: Chỉ áp dụng cho dòng Joomla! 1.0.x

Đối với Joomla 1.5.x


Thêm phần sau "?template=new_template_name" vào phía sau địa chỉ Website của
bạn.

VD:

• http://demo.joomlaspan.com/demo15/?template=beez
• http://demo.joomlaspan.com/demo15/?template=rhuk_milkyway
• http://joomlademo15.com/?template=beez
• http://joomlademo15.com/?template=rhuk_milkyway

21. Backup database với LazyBackup


Monday, 29 June 2009 09:57

Trong các cách để backup database thì plugin LazyBackup (hay


Lazy Backup 2) là một giải pháp sao lưu dữ liệu khá hay và được
nhiều người sử dụng. Với nhiều tùy chọn như: Tự động backup và
gửi vào một hoặc nhiều email cùng lúc, hẹn giờ backup, không cần
những thao tác phức tạp hoặc đòi hỏi kỹ năng hiểu biết cao về "cron"
của Unix hay "scheduled tasks" của Windows, hỗ trợ chuẩn nén gzip
và bảo vệ bằng mật khẩu, dễ dàng cài đặt và quan trọng là miễn phí;
Plugin LazyBackup xứng đáng là một món đồ không thể thiếu trong kho extensions của
các fan Joomla.

Download plugin LazyBackup


• Link download: LazyBackup

Cài đặt plugin LazyBackup


01:13: Mở menu "Extensions"

01:16: Chọn mục "Install/Unistall"

01:20: Trong mục "Upload Package File", chọn plugin


LazyBackup đã download

02:03: Nhấn nút [Upload Files & Install]

Cấu hình plugin LazyBackup


02:12: Mở menu "Extensions"
02:15: Chọn mục "Plugin Manager"

02:47: Tìm đến plugin có tên "LazyBackup"

Một số tùy chọn cần lưu ý:

• Compress backup file?: Cho phép nén file để giảm dung lượng.
• Only structure: Chỉ backup cấu trúc của database. Nên chọn "No", không chọn
"Yes"
• Backup every x days: Backup theo chu kỳ x ngày.
• Backup time (00:00-23:59): Thời điểm backup trong ngày.
• Backup x times a day: Số lần backup 1 ngày.
• To Email address: Địa chỉ email để lưu file backup, sử dụng dấu phẩy "," để
phân cách giữa các email.
• Backup path: Đường dẫn để lưu file backup. Bạn cần điền đường dẫn ở dạng đầy
đủ. VD như: /home/vinaora.com/public_html/backup.
• Password for encryption: Mật khẩu để bảo vệ các file backup.

04:02: Cuối cùng trong mục "Enabled" chọn "Yes" để kích hoạt.

04:05: Nhấn nút [Save] để lưu lại kết quả.

Keyword:
• joomla, lazybackup, lazy backup, backup, database, extensions, plugin

• sao lưu, dữ liệu, tự động, email

Tối ưu Website Joomla!


22. Tăng tốc Joomla! bằng cách tạo cache cho module
Monday, 16 March 2009 00:27

Nếu như bạn có một website đơn giản và mỗi ngày chỉ có
vài trăm khách viếng thăm thì bạn không cần quan tâm tới
bài viết này. Còn nếu bạn nhận thấy website của bạn luôn
nạp rất chậm khi có nhiều người truy cập thì bạn cần bật
tính năng "debug" của Joomla! và quan sát xem có bao
nhiêu truy vấn đã được thực thi. Trung bình từ 50 trở
xuống là ổn. Còn trong trường hợp có hàng trăm truy vấn
thì bạn cần phải chú ý tới tính năng cache của Joomla! và
tham số cache của các module.

Tính năng debug của Joomla!


Sau khi bật tính năng debug của Joomla! bạn sẽ trông thấy các thông tin giống như dưới
đây ở phía cuối website.

Profile Information

Application afterLoad: 0.001 seconds, 0.23 MB


Application afterInitialise: 0.073 seconds, 2.16 MB
Application afterRoute: 0.087 seconds, 2.83 MB
Application afterDispatch: 0.112 seconds, 3.64 MB
Application afterRender: 0.259 seconds, 4.45 MB

Memory Usage 4702404

16 queries logged

Tham số cache là gì?


Đây là một tham số đặc biệt trong Joomla. Khi tham số này được bật, nó sẽ báo hiệu cho
Joomla tạo cache cho module và giúp tăng tốc cho website. Tại sao lại như vậy? Lấy thí
dụ, module của chúng ta hiển thị 10 banner quảng cáo mới nhất. Nếu là một developer
giỏi, chỉ cần 1 truy vấn cho module đó, còn ngược lại sẽ mất 10 truy vấn để thực thi.
Đáng buồn là thực tế thì có rất nhiều module như vậy, có lẽ do các developer chỉ chú
trọng tới các tính năng và chỉ muốn nhanh chóng phát hành sản phẩm tới cộng đồng mà
không chú trọng tới hiệu suất thực thi.

Khi Joomla cache mô-đun, sẽ chỉ mất một lần truy vấn khi trang chứa module đó được
nạp lần đầu. Còn khi có người thứ hai ghé thăm trang này, đơn giản là Joomla chỉ cần lôi
nó từ cache (một file nằm trong thư mục /cache của Joomla). Không phải thực hiện bất cứ
truy vấn nào nữa và do vậy giảm tải cho máy chủ và tăng hiệu suất thực thi. Truy vấn chỉ
được thực hiện lại sau khi cache hết hạn (theo mặc định của Joomla là 900s) - bạn có thể
thiết lập lại giá trị này trong mục Site >> Global Configuration

Cách thêm tham số Cache cho module Joomla


Bước 1: Chỉnh sửa file XML của module

Bạn thêm vào đoạn mã sau:

<params group="advanced">
<param name="cache" type="list" default="1" label="Caching"
description="Select whether to cache the content of this module">
<option value="1">Use global</option>
<option value="0">No caching</option>
</param>
<param name="cache_time" type="text" default="900"
label="Cache Time" description="The time before the module is recached"
/>
</params>

Bước 2: Bật tính năng cache của module

Thuật ngữ:
• Module (mô-đun) là một trong các thành phần mở rộng của Joomla thường được
dùng để hiện thị dữ liệu (VD: các tin bài mới nhất, các tin được xem nhiều nhất...)
• Cache / Caching: tính năng tạo bộ nhớ đệm trong Joomla! để giảm số truy vấn và
tăng tốc độ thực thi
• Debug: tính năng gỡ lỗi trong Joomla!

Keyword:
• joomla, module, cache, caching, debug
• tăng tốc, tốc độ, nhanh, chậm, truy vấn, tính năng, bộ nhớ đệm, gỡ lỗi

23. Những điều cần tránh khi tối ưu Joomla (Joomla SEO)
1. Sử dụng một danh sách các từ khóa trong tiêu đề
hoặc thẻ meta của bài viết
VD: Nếu bạn có một tiêu đề bài viết là "seo, sef, search engine, tối ưu, rank, joomla" thì
chắc chắn các máy tìm kiếm (search engine) sẽ coi đó là các từ khóa phân biệt và đánh
giá thấp bài viết của bạn.
Vì vậy thay vì cố tình spam các máy tìm kiếm, bạn hãy đặt một tiêu đề thật tự nhiên và
phản ánh chân thực bài viết của mình. Nếu thực sự cần đưa một số từ khóa vào tiêu đề,
bạn nên phân tách chúng bằng dấu gạch ngang "-". Ví dụ: "Tối ưu (seo-sef) cho Joomla"

2. Không hợp nhất 2 tên miền "có -www" và "không có


-www"
Chẳng hạn bạn có tên miền là vinaora.com, bạn sẽ cần cấu hình để các máy tìm kiếm đều
coi http://vinaora.com và http://vww.vinaora.com là một mà không phải là hai địa chỉ
khác nhau.

Bạn có thể sử dụng file .htaccess để thực hiện công việc trên.

3. Không kiểm tra danh mục các bài viết mà các máy
tìm kiếm đã lập chỉ mục
Bạn nên thường xuyên kiểm tra xem các máy tìm kiếm Google, Yahoo, MSN... lập chỉ
mục Website của bạn ra sao để kịp thời phát hiện các link bị hư hỏng hay không mong
muốn.

Bạn có thể sử dụng dịch vụ "Google Analytics" để thống kê về hoạt động của website

24. Tăng tốc Joomla 1.0 - Cải thiện các truy vấn SQL
Joomla thường bị chỉ trích vì tạo quá nhiều truy vấn SQL tới cơ sở dữ liệu MySQL, đồng
thời Joomla cũng có cơ sở dữ liệu được thiết kế chưa thực sự tốt (cụ thể là việc lập chỉ
mục cho các bảng). Bài viết dưới đây sẽ hướng dẫn bạn thực hiện một vài chỉnh sửa nhỏ
với cơ sở dữ liệu Joomla. Bạn sẽ thấy tốc độ của Joomla được cải thiện đáng kể.

Lưu ý: Trước khi thực hiện mọi thay đổi hãy tiến hành backup toàn bộ website.

Bước 1: Mở phpMyAdmin và chọn database Joomla


• VD: http://vinaora.com/phpMyAdmin

Bước 2. Xác định phần tiền tố của các bảng


Thường là "jos_"

Bước 3: Mở công cụ SQL (thực hiện các truy vấn SQL)


Chạy các câu lệnh SQL tương ứng sau:

Đối với Joomla! core:

ALTER TABLE `jos_categories` ADD INDEX `title_id` (`title`,`id`);


ALTER TABLE `jos_components` ADD INDEX `opt_par` (`option`, `parent`, `id`);
ALTER TABLE `jos_components` ADD INDEX `admin_opt` (`admin_menu_link`,
`option`);
ALTER TABLE `jos_content` ADD INDEX `state_access` ( `state` , `access` ,
`publish_up` , `publish_down` , `id` , `catid` , `sectionid` , `created_by` );
ALTER TABLE `jos_core_acl_aro` ADD INDEX `val_aro_id` (`value`, `aro_id`);
ALTER TABLE `jos_core_acl_aro_groups` ADD INDEX `name_lft_rgt` (`name`, `lft`,
`rgt`);
ALTER TABLE `jos_mambots` ADD INDEX `fold_acc` ( `folder`, `access`, `published`,
`ordering`, `element`, `params`(20));
ALTER TABLE `jos_mambots` ADD INDEX `element` ( `element` );
ALTER TABLE `jos_menu` ADD INDEX `link_id` (`link`(30), `id`);
ALTER TABLE `jos_menu` ADD INDEX `link_pub_id` (`link`(30), `published`, `id`);
ALTER TABLE `jos_menu` ADD INDEX `pub_acc_menu` (`published`, `access`,
`menutype`, `parent`,`ordering`, `id`, `name`);
ALTER TABLE `jos_sections` ADD INDEX `id,acc,pub` (`id`, `access`, `published`,
`name`(20));
ALTER TABLE `jos_sections` ADD INDEX `pub_acc_id`
(`published`,`access`,`id`,`name`(20));
ALTER TABLE `jos_stats_agents` ADD INDEX `agent_type` (`agent`,`type`,`hits`);
ALTER TABLE `jos_templates_menu` ADD INDEX `client_menu` (`client_id`,
`menuid`, `template`);
ALTER TABLE `jos_template_positions` ADD INDEX `pos` (`position`);
ALTER TABLE `jos_users` ADD INDEX `user_pass_id` (`username`,`password`,`id`);

Đối với DocMan:

ALTER TABLE `jos_docman` ADD INDEX `own_pub` (`dmowner`, `published`,


`approved`, `catid`, `id`);

Đối với JoomComment

ALTER TABLE `jos_jomcomment` ADD INDEX `content_opt` (`contentid`,`option`,


`published`);

Đối với OpenSEF

ALTER TABLE `jos_opensef_config` ADD INDEX `scope_name` (`scope`, `name`);


ALTER TABLE `jos_opensef_sef` ADD INDEX `exter_dir` (`external`, `direction`,
`site_id`, `use_internal`);
Keyword:
• Joomla, tăng tốc, SQL, truy vấn

25. Tăng tốc cho Joomla 1.5


• Tối ưu Template.
• Bật tính năng nén thông tin bằng GZip
• Hạn chế sử dụng các Component/Module
• Hạn chế sử dụng các tính năng thống kê
• Lựa chọn đúng công cụ SEO/SEF
• Bật tính năng cache của hệ thống
• Loại bỏ các truy vấn tồi
• Tránh xa việc bắc cầu (Bridge)
• Tối ưu Cơ sở dữ liệu

Tối ưu Template
Joomla có một hệ thống template cực kỳ phong phú và phần lớn trong số chúng đều trông
rất đẹp, tuy nhiên không phải template nào cũng tuân theo chuẩn và đạt yêu cầu về tốc
độ. Do vậy để tối ưu Template bạn cần chú ý một số vấn đề sau:

• Thiết kế Website theo chuẩn (HTML và CSS) để các trình duyệt có thể tính toán
nhanh chóng và hiển thị chính xác những gì bạn muốn hiển thị.
• Tránh sử dụng các ảnh có kích thước lớn hoặc sử dụng nhiều ảnh.
• Giảm kích thước của các file CSS, Javascript

Tham khảo: Website Analyzer

Bật GZip
GZip là một tính năng cho phép nén các thông tin. Nó đặc biệt hữu dụng khi Joomla của
bạn được host trên Server có bộ xử lý mạnh.

Hạn chế sử dụng các Component/Module


Nếu bạn ghé thăm http://extensions.joomla.org bạn sẽ thấy Joomla! có hàng ngàn các
Component/Module, tuy nhiên không phải cái nào cũng được thiết kế tốt. Và chính
những component/module này đã làm giảm tốc độ nạp website của bạn. Do vậy hãy cẩn
thận trong việc lựa chọn và cài đặt các Component/Module. Hãy hạn chế xuống mức thấp
nhất có thể và xóa ngay những Component/Module không dùng đến.

Hạn chế các tính năng liên quan tới thống kê


Các Component/Module thống kê thường được thiết kế và hiển thị các thông tin trông rất
bắt mắt tuy nhiên chúng lại là thủ phạm gây ra hàng tấn truy vấn tới MySQL. Do vậy
thay vì dùng các Component/Module này bạn có thể sử dụng "Google Analytics"

Lựa chọn đúng công cụ SEO/SEF


Joomla có khá nhiều công cụ hỗ trợ SEO/SEF (tạo các link thân thiện đối với máy tìm
kiếm và người sử dụng) như: OpenSEF, Artio JoomSEF, sh404SEF... Tuy nhiên không
phải cứ cái nào cung cấp nhiều tính năng, cấu hình dễ dàng, hiển thị đẹp là cái mà bạn lựa
chọn. Bạn cần xem xét kỹ về cách thức làm việc của các công cụ này vì hầu hết trong số
chúng tạo ra hàng tấn truy vấn tới MySQL.

Bật tính năng Cache của hệ thống


Nếu bạn bật tính năng tạo Cache cho các bài viết và module, chúng sẽ được nạp nhanh
hơn (các mambot không bị xử lý mỗi khi trang được nạp).

Loại bỏ các truy vấn tồi


Bật tính năng debug của website và kiểm tra các truy vấn được thực thi. Hãy luôn giữ số
truy vấn thấp nhất có thể (từ 30-50 truy vấn). Xác định các Component/Module/Mambot
tạo ra nhiều truy vấn để tìm cách tối ưu hoặc thông báo cho tác giả của
Component/Module/Mambot đó.

Tránh xa việc bắc cầu (Bridge)


Nhiều người thích tích hợp forum (chẳng hạn SMF), thư viện ảnh (chẳng hạn Gallery2)
vào Joomla thông qua một cầu nối (Bridge). Tuy nhiên Bridge lại chính là nguyên nhân
làm giảm tốc độ của Joomla. Do vậy hãy cố gắng không sử dụng Bridge.

Tối ưu Cơ sở dữ liệu (Database)


Có 2 loại tối ưu: Tối ưu các bảng và tối ưu các lược đồ. Tối ưu lược đồ thì chỉ cần thực
hiện một lần (Xem thêm bài: Cải thiện các truy vấn SQL). Tối ưu các bảng thì cần thực
hiện thường xuyên (khi dữ liệu được thêm, chỉnh sửa hoặc xóa). Để tối ưu các bảng: Mở
phpMyadmin > Chọn Joomla > chọn bảng muốn tối ưu> chọn Optimize.

(Đang hoàn thiện)

26. Bật tính năng "cache" để tăng tốc cho Joomla 1.5!
Bước 1: Đăng nhập vào trang quản trị (back-end)
VD: http://vinaora.com/administrator

Bước 2: Thiết lập tính năng "cache"


Mở menu Site -> Global Configuration

Nhấn vào link "System"

Tìm mục "Cache Settings" và chọn "Yes" rồi nhấn nút "Save" để lưu lại
Lưu ý
Khi bật tính năng "cache", mọi thay đổi sau này sẽ không trông thấy kết quả ngay lập tức
mà phải chờ sau khoảng thời gian "cache" (mặc định là 15').

Keyword: joomla, cache, tăng tốc

27. Tạo link thân thiện SEO/SEF


Thursday, 24 May 2007 14:03

Thông thường sau khi cài đặt Joomla! chúng ta dễ nhận thấy các
địa chỉ URL (các đường link) của Website đều rất dài và chứa
các tham số trông rất phức tạp. Để có thể đơn giản hóa các
đường link này, đặc biệt là việc biến các đường link này sao cho
chúng có thể chứa tiêu đề của bài viết liên quan giúp các máy tìm kiếm như Google ,
Yahoo dễ phát hiện ra chúng ta cần bật tính năng SEO/SEF của Joomla!

Trước khi bật tính năng SEO/SEF chúng ta có các địa chỉ URL dạng như sau:

http://vinaora.com/joomla/index.php?
option=com_content&task=view&id=5&Itemid=6
http://vinaora.com/joomla/index.php?Itemid=27&option=com_content

Sau khi bật tính năng SEO/SEF chúng ta có các địa chỉ URL tương ứng như sau:

http://vinaora.com/joomla/content/view/5/6
http://localhost/joomla/Toi-uu-Website-Joomla/27-Tao-link-than-thien-
SEO-SEF
Bây giờ, để bật tính năng SEO/SEF các bạn thực hiện từng bước như sau:

Bước 1: Xác định dạng địa chỉ Website của bạn


Mở file htaccess.txt và tìm đến đoạn:

# Uncomment following line if your webserver's URL


# is not directly related to physical file paths.
# Update Your Joomla/MamboDirectory (just / for root)
# RewriteBase /

Nếu Website của bạn có dạng http://vinaora.com/ , gõ thêm dòng:


RewriteBase /

Nếu Website của bạn có dạng http://vinaora.com/joomla/ , gõ thêm


dòng:
RewriteBase /joomla

Bước 2: Đổi tên file htaccess.txt --> .htaccess


Có thể đổi tên thông qua FTP hoặc công cụ quản lý file do HOSTING
cung cấp

Nếu bạn chạy trên localhost thì mở COMMAND

- Chuyển đến thư mục chứa Joomla bằng lệnh cd, VD:

cd C:/www/joomla

- Sau đó đổi tên

rename htaccess.txt .htaccess

Bước 3: Bật SEO/SEF:


Vào trang quản trị Joomla, VD: http://vinaora.com/joomla/administrator/

Nếu đang dùng Joomla 1.5


Chọn Global Configuration --> SEO Settings --> Search Engine Friendly URLs
Nếu đang dùng Joomla 1.0.x (1.0.12)
Chọn Site --> Global Confirguration --> SEO

Bước 99: Các chú ý


Apache Server của bạn phải nạp rewrite_module.

Nếu bạn đang làm trên localhost, thì mở file httpd.conf và tìm đến dòng:

#LoadModule rewrite_module modules/mod_rewrite.so

bỏ dấu # ở đầu dòng đi

Ngoài việc bật tính năng SEO/SEF trên chính Joomla chúng ta có thể sử dụng các phần
mềm của hãng thứ ba (3rd party) để có thể có được những đường link như ý muốn. VD
như: Artio JoomSEF, OpenSEF, Joomla SEF Patch, JoomSEO

Bảo mật Website Joomla!


28. Phân quyền trong Joomla! 1.5
Phân quyền Joomla! ở tiền sảnh (front-end)
Ở phần tiền sảnh, Joomla! chia làm 5 nhóm người dùng tương ứng với 5 mức truy cập
khác nhau:

• Guest (Khách): Là những người truy cập, sử dụng website nói chung, họ không
sở hữu tài khoản nào trên hệ thống Joomla!
• Registered (Thành viên): Là khách sau khi đăng ký vào của hệ thống Joomla! và
trở thành thành viên chính thức của hệ thống.
• Author (Tác giả): Là thành viên có quyền đăng bài hoặc đăng một vài thứ khác
mà hệ thống cho phép (chẳng hạn như weblink)
• Editor (Người biên soạn): Là thành viên có quyền đăng, kiểm duyệt và chỉnh sửa
tất cả các bài viết (thậm chí cả những bài viết không phải của họ)
• Publisher (Người xuất bản): Là người biên soạn, ngoài ra có thêm quyền quyết
định việc phát hành các bài viết (chính thức xuất bản lên Website hay không)
Lưu ý 1: Có thể thiết lập để mặc định tài khoản Khách (Guest) cũng là tài khoản Thành
viên (Registered).
Lưu ý 2: Bất cứ thành viên nào thuộc phần hậu sảnh (Back-End) cũng có thể thực hiện
các thao tác mà người xuất bản (Publisher) có thể làm.

Phân quyền Joomla! ở hậu sảnh (back-end)


Ở phần hậu sảnh, Joomla! chia làm 3 nhóm tài khoản với 3 mức độ quyền hạn khác nhau:

• Manager (Người quản lý): Là tài khoản có quyền thực hiện các thao tác quản lý
cơ bản (quản lý menu, quản lý bài viết...).
• Administrator (Quản trị viên): Là tài khoản có quyền thực hiện mọi thao tác, trừ
việc quản lý thông tin cấu hình hệ thống, quản lý giao diện, quản lý ngôn ngữ,
quản lý các tài khoản siêu quản trị.
• Super Administrator (Siêu quản trị): Là tài khoản có đặc quyền cao nhất, có thể
thực hiện mọi hành động.
Thuật ngữ:
• Front-end (Frontend): Phần tiền sảnh hay phần mặt trước, phần mặt tiền phía
trang chủ mà ai cũng có thể trông thấy.
• Back-end (Backend): Phần hậu sảnh hay phần quản trị là vùng chỉ dành cho các
thành viên có quyền quản trị hệ thống Joomla!.
• ACL (Access Control List): Danh sách điều khiển truy cập (trong bài viết này sử
dụng khái niệm Phân quyền cho dễ hiểu).

Keyword:
• phân quyền, quản trị, khách, người đăng ký, tác giả, người biên soạn, người xuất
bản, quản lý, thành viên, đăng, kiểm duyệt, tiền sảnh, hậu sảnh, tài khoản, danh
sách điều khiển truy cập
• joomla, administrator, manager, publisher, editor, author, registered, guest, front-
end, back-end, acl, access control list
Chú ý: Ghi rõ nguồn VINAORA.COM khi sử dụng bài viết này.

29. Bảo mật cho trang quản trị Joomla! bằng cookie
Ý tưởng của giải pháp này là: Sử dụng chứng thực bằng cookie ngăn chặn mọi truy cập
trực tiếp tới vùng quản trị Joomla! bằng đường dẫn /administrator (VD:
http://vinaora.com/joomla/administrator). Thay vào đó phải truy cập gián tiếp thông qua
một đường dẫn chỉ mình bạn biết (chẳng hạn
http://vinaora.com/joomla/secret/vinaora.php).

Bước 1: Tạo một thư mục bí mật chẳng hạn


[Joomla]/secret
Thư mục này nằm cùng mức với thư mục /administrator

Lưu ý: Bạn hoàn toàn có thể sử dụng một thư mục có sẵn (chẳng hạn thư mục /language)

Bước 2: Tạo một file "vinaora.php" trong thư mục bí


mật trên với nội dung sau:
< ?php
$admin_cookie_code="abcdef123456";
setcookie("VinaoraAdminSession",$admin_cookie_code,0,"/");
header("Location: /administrator/index.php");
?>
Bạn nên đổi cặp giá trị cookie "VinaoraAdminSession" & "abcdef123456" bằng những
chuỗi ký tự bất kỳ (gồm ký tự chữ cái và ký tự số) để tránh hacker sử dụng công cụ chèn
trực tiếp cookie trên vào trình duyệt.
Bạn cũng có thể sử dụng một cái tên khác chứ không nhất thiết phải là "vinaora.php" :)

Bước 3: Thêm nội dung sau tới file ".htaccess" của thư
mục /administrator
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/administrator
RewriteCond %{HTTP_COOKIE} !VinaoraAdminSession=abcdef123456
RewriteRule .* - [L,F]

Trong trường hợp HOSTING của bạn không hỗ trợ file .htaccess hãy liên hệ với bộ phận
kỹ thuật để được giúp đỡ.

Khi cần truy cập vào trang quản trị hãy gõ đường dẫn: http://yoursite/secret/vinaora.php

• VD: http://vinaora.com/secret/vinaora.php

Keyword:
• bảo mật, ngăn cấm, truy cập, trang quản trị, thư mục, trực tiếp, gián tiếp
• joomla, security, administrator, htaccess, cookie

Reference:
http://forum.joomla.org/

Chú ý: Ghi rõ nguồn VINAORA.COM khi sử dụng bài viết này.

30. Các cách CHMOD cho tệp (file) và thư mục


(directory)
Để đảm bảo an toàn cho các file và thư mục trong Joomla!, tránh sự nhóm ngó của các
hacker thì một trong các yêu cầu quan trọng và phải luôn lưu ý đó là CHMOD cho đúng.

Thông thường chúng ta cần thiết lập CHMOD 755 cho các thư mục và CHMOD 644
cho các file.

CHMOD là gì? CHMOD= 755 là gì? CHMOD = 644 là


gì?
CHMOD chính là thao tác thay đổi các quyền sau:

• "Read" (Đọc): viết tắt là "r", và được biểu diễn bằng số 4


• "Write" (Ghi / Chỉnh sửa): viết tắt là "w", và được biểu diễn bằng số 2
• "Execute" (Thực thi): viết tắt là "x", và được biểu diễn bằng số 1

CHMOD cùng lúc thay đổi quyền hạn trên các file/thư mục với các đối
tượng sau:

• "Owner" - chủ sở hữu của file/thư mục,


• "Group" - Nhóm mà Owner là thành viên,
• "Public / Others/ Everybody": những người còn lại.

CHMOD 755 (rwx r-x r-x) cho thư mục

Lưu ý: Khái niệm CHMOD không tồn tại trên hệ thống Windows, mà chỉ có trên các hệ
thống Unix/Linux

CHMOD = 755 cho các thư mục có nghĩa là:

• 7 = 4 + 2 + 1 : Người sở hữu thư mục có quyền đọc thư mục (read); chỉnh sửa thư
mục (write); liệt kê các thư mục và file bên trong (execute);
• 5 = 4 + 0 + 1 : Những người cùng nhóm chỉ có quyền đọc thư mục (read); liệt kê
các thư mục và file bên trong (execute)
• 5 = 4 + 0 + 1 : Những người còn lại chỉ có quyền đọc thư mục (read); liệt kê các
thư mục và file bên trong (execute)
CHMOD 755 (rwx r-x r-x) cho thư mục

CHMOD = 644 cho các tệp (file) có nghĩa là:

• 6 = 4 + 2 + 0 : Người sở hữu thư mục có quyền đọc tệp (read); chỉnh sửa tệp
(write)
• 4 = 4 + 0 + 0 : Những người cùng nhóm chỉ có quyền đọc tệp (read)
• 4 = 4 + 0 + 0 : Những người còn lại chỉ có quyền đọc tệp (read)
CHMOD 644 (rw- r-- r--) cho file

CMOD 755 cho các thư mục, CHMOD 644 cho các file
bằng một file PHP
Tạo một file "chmod.php" nằm trong thư mục mà bạn cần CHMOD cho toàn bộ các file,
thư mục bên trong nó với nội dung như sau:

<?php

system('find . -type d -exec chmod 755 {} \; 2>&1');


system('find . -type f -exec chmod 644 {} \; 2>&1');

echo("\n\nComplete!");

?>

Sau đó thực thi các dòng lệnh trên bằng cách mở link tới file này. VD:

http://vinaora.com/joomla/chmod.php

CHMOD 755 cho các thư mục, CHMOD 644 cho các
file bằng dòng lệnh
Nếu bạn là người quản trị server hoặc có thể thực thi dòng lệnh thông qua SSH thì trước
tiên bạn cần chuyển đến thư mục Joomla bằng lệnh "cd" (change directory), sau đó bạn
có thể dùng các lệnh sau:

find . -type d -exec chmod 755 {} \; // dùng để CHMOD cho


các thư mục
find . -type f -exec chmod 644 {} \; // dùng để CHMOD cho
các file

hoặc

find . -type d -print0 | xargs -0 chmod 0775 // dùng để CHMOD cho


các thư mục
find . -type f -print0 | xargs -0 chmod 0664 // dùng để CHMOD cho
các file

hoặc

chmod -R 755 ./* // dùng để CHMOD tất cả


các thư mục và file
find . -type f -exec chmod 644 {} \; // dùng để CHMOD cho
các file

CHMOD bằng các trình quản lý file như "File


Manager", "FileZilla"...
Đối với FileZilla:

• Chọn"Recurse into subdirectories" để áp dụng thao tác CHMOD cho cả các thư
mục con
• Chọn "Apply to all files and directories" để áp dụng thao tác CHMOD cho tất cả
các file và thư mục
• Chọn "Apply to files only" để chỉ áp dụng thao tác CHMOD cho các file
• Chọn "Apply to directories only" để chỉ áp dụng thao tác CHMOD cho các thư
mục
CHMOD 755 (rwx r-x r-x) cho thư mục bằng FileZilla
CHMOD 755 (rwx r-x r-x) cho thư mục bằng "File Manager"

Keyword
• chmod, 755, 644, read, write, execute, PHP, FileManager, FileZilla
• đọc, ghi, chỉnh sửa, thực thi, dòng lệnh

Các câu hỏi liên quan


• Làm thế nào để CHMOD trong Joomla?
• Làm sao để CHMOD cho các thư mục và file trong Joomla?
• CHMOD = 755 nghĩa là gì?
• CHMOD = 644 nghĩa là gì?

31. Chống tấn công SQL Injection trong Joomla


Sunday, 03 August 2008 14:31

Hiện Joomla! ngày càng phát triển mạnh mẽ và ngày càng được ứng dụng rộng rãi ở Việt
Nam với số lượng các thành phần mở rộng (extensions) từ các hãng thứ ba cũng tăng
không ngừng cả về số lượng và chất lượng. Rất nhiều thành phần mở rộng (gồm
component, module, plugin, template...) thực sự tuyệt vời và đáng được cài đặt trên mọi
Website.

Tuy nhiên, có một thực tế song hành với mặt ưu điểm trên là số lượng các Website bị tấn
công thông qua các lỗi lập trình bất cẩn trong các thành phần mở rộng được cài đặt thêm
cũng ngày càng tăng cao. Thậm chí số lượng lỗi bị khai thác còn cao hơn cả Microsoft
(theo báo cáo 6 tháng đầu năm 2008 của IBM).

Do vậy, ngay từ lúc này, bạn hãy kiểm tra lại toàn bộ hệ thống của mình để đảm bảo: Chỉ
cài đặt các thành phần mở rộng thực sự cần thiết, thực sự uy tín và hãy nhờ một người có
kinh nghiệm để kiểm tra các đoạn mã, mà một trong số chúng thường bị hacker khai thác
- các lỗi phổ biến về truy vấn SQL (thường gọi là SQL Injection).

Đối với người sử dụng cuối (end-user):

Không dùng tiền tố mặc định 'jos_'


Khi cài đặt website, Joomla sử dụng tiền tố mặc định cho các bảng của cơ sở dữ liệu:
'jos_'. Tuy nhiên để tránh sự nhòm ngó của các haker bạn nên đổi tiền tố này.

Không dùng tài khoản mặc định 'admin'


• Tạo một tài khoản quản trị (Super Administrator) mới thay vì dùng tài khoản mặc
định có tên 'admin'
• Đổi tên và vô hiệu hóa tài khoản mặc định 'admin' mà Joomla đã tạo ra khi cài đặt
bằng cách: Mở bảng _users, tìm bản ghi có id=62, đổi username khác 'admin' và
thay block bằng '1')
Đối với những người lập trình (developer) thì chú ý
những vấn đề sau:

Ép kiểu dữ liệu
Luôn ép kiểu dữ liệu cho các chuỗi đưa vào câu lệnh truy vấn SQL. Thí dụ:

Nếu muốn kiểu dữ liệu là kiểu nguyên (integer) thì sử dụng câu lệnh SQL:

$sql = 'UPDATE #__mytable SET `id` = ' . (int) $int;

Nếu muốn kiểu dữ liệu là kiểu ngày/tháng (date) thì sử dụng câu lệnh SQL:

$date = & JFactory::getDate($mydate);


$sql = 'UPDATE #__mytable SET `date` = ' . $db->quote( $date-
>toMySQL(), false);

Luôn gỡ bỏ ý nghĩa của những ký tự đặc biệt


Bạn cần gỡ bỏ ý nghĩa của những ký tự đặc biệt (những ký tự có khả năng gây nguy hiểm
cho câu lệnh SQL) nằm trong các chuỗi dữ liệu được đưa vào câu lệnh SQL bằng câu
lệnh:

$sql = 'UPDATE #__mytable SET `string` = ' . $db->quote( $db-


>getEscaped( $string ), false );

Chống tấn công DOS


Trong các mệnh đề WHERE, nếu bạn có sử dụng lệnh LIKE, hãy đảm bảo rằng bạn đã
lọc các ký tự đặc biệt như "%" và "_" thì sử dụng câu lệnh SQL:

$sql = 'UPDATE #__mytable SET .... WHERE `string` LIKE '.


$db->quote( $db->getEscaped( $string, true ), false )

Chống tấn công XSS


Rất nhiều người có thói quen lấy dữ liệu nhập vào từ người dùng bằng câu lệnh
JRequest::getVar(). Tuy nhiên đây là một thói quen không tốt. Thay vào đó bạn nên sử
dụng các phương thức ép kiểu. Thí dụ:
Nếu muốn kiểu số nguyên, dùng câu lệnh:

$int = JRequest::getInt( $name, $default );

Nếu muốn kiểu số thực, dùng câu lệnh:

$float = JRequest::getFloat( $name, $default );

Nếu muốn kiểu logic (đúng/sai), dùng câu lệnh:

$bool = JRequest::getBool( $name, $default );

Nếu muốn kiểu từ (word): chỉ có các ký tự chữ cái và ký tự gạch dưới "_", dùng câu lệnh:

$word = JRequest::getWord( $name, $default );

Nếu muốn kiểu câu lệnh (command): chỉ có các ký tự chữ cái, ký tự số, ký tự "." và "_",
dùng câu lệnh:

$cmd = JRequest::getCMD( $name, $default );

Nếu muốn kiểu văn bản không phải HTML (văn bản đã được lọc bỏ các thẻ HTML),
dùng câu lệnh:

$string = JRequest::getString( $name, $default );

Tham khảo thêm:


• Preventing SQL Injections (tác giả: Anthony Ferrara - Joomla Core Team, bài gốc
tiếng Anh)
• SQL Injection
• API getEscaped
• database->getEscaped

Keyword:
• câu lệnh, sql, sql injection, ép kiểu, lọc bỏ, số nguyên, số thực, DOS, XSS,
interger, float, string, JRequest...

Ghi rõ nguồn "http://dev.joomla.org" (bản gốc) và "http://vinaora.com" (bản dịch và


tổng hợp) khi sử dụng bài viết này.

32. Kiểm tra Website Joomla bằng Joomla! HISA


Joomla HISA là một công cụ kiểm tra - bảo mật cho phép:
• Kiểm tra một HOSTING có đáp ứng các yêu cầu cần thiết để cài đặt Joomla hay
không
• Thông báo các thông số của HOST (tên host, địa chỉ IP...); thông số về PHP,
MYSQL...
• Cảnh báo về các thiết lập không an toàn
• Cảnh báo về các thư mục chưa được thiết lập đúng quyền hạn

Cũng giống như "Joomla Diagnostics", rất đơn giản bạn chỉ cần tải về công cụ có tên là
Joomla! HISA (Joomla! Health, Installation and Security Audit). Sau đó upload 1 file
duy nhất (joomla_hisa_en.php) lên Hosting định cài đặt Joomla và xem kết quả.

Phiên bản Joomla HISA hiện tại chỉ cho phép kiểm tra dòng Joomla! 1.0.x (từ Joomla
1.0.10 trở đi)

Quy trình kiểm tra


• Download Joomla HISA: >> Joomla HISA <<<

• Giải nén và upload Joomla! HISA: Giải nén, sau đó upload 1 file duy nhất
(joomla_hisa_en.php) lên thư mục chứa Joomla

• Chạy Joomla! HISA: Mở trình duyệt và gõ vào URL tới file


"joomla_hisa_en.php".

VD: http://vinaora.com/joomla/joomla_hisa_en.php

Joomla! HISA sẽ thông báo kết quả


Host Environment: Thông số chung của Host

PHP Environment: Thông số về PHP

MySQL Environment: Thông số về MySQL


Joomla! Environment: Các thông số liên quan cho Joomla

Required and Recommended Settings: Các yêu cầu bắt buộc và


khuyến cáo

Nếu một trong các thiết lập bị cảnh báo bằng màu đỏ thì bạn nên xem bài viết "Xử lý
cảnh báo trong quá trình cài đặt và cấu hình Joomla!" để biết cách khắc phục.

Directory and File Permissions: Quyền hạn đối với các tệp và thư
mục

Để tránh các HACKER nhòm ngó bạn nên thiết lập các thư mục với CHMOD = 755, các
tệp với CHMOD = 644
Chú ý:
Thứ nhất, nên đổi tên file joomla_hisa_en.php trước khi upload lên host (Chẳng hạn đổi
tên thành vinaora_hisa.php)

Thứ hai, sau khi sử dụng hãy xóa ngay file Joomla Hisa nói trên

Bài viết liên quan


• http://forum.joomla.org/index.php/topic,136328.0.html

Keyword:
• joomla, hisa, joomla hisa, kiểm tra, website, chmod

33. Kiểm tra hệ thống file Joomla bằng Joomla


Diagnostics
Thông thường sau khi upload Joomla lên Hosting, hoặc sau một quá trình dài sử dụng
bạn rất muốn biết liệu thư mục Joomla của mình có bị thiếu file, hư hỏng hoặc bị Hacker
chỉnh sửa gì không? Joomla của mình có an toàn không? Thật đơn giản, bạn hãy tìm và
download Joomla Diagnostics. Đây là một công cụ miễn phí cho phép xác định rõ:

• Những file bị thiếu


• Những file bị hỏng hoặc đã bị chỉnh sửa
• Những file không an toàn (có thể truy cập trực tiếp từ đường dẫn, do thiếu kiểm
tra _VALID_MOS hoặc _JEXEC)
• Các thiết lập không an toàn (VD: register_globals = off)
Quy trình kiểm tra như sau:
Download Joomla Diagnostics:

• Xác định rõ phiên bản Joomla mà bạn đang sử dụng: Joomla 1.0.13 hay Joomla
1.5
• Tìm đúng Joomla Diagnostics cho phiên bản mà bạn đang sử dụng
• Link download: Joomla Diagnostics

Giải nén Joomla Diagnostics

Giải nén Joomla Diagnostics mà bạn vừa download ở trên (gồm 2 file: diagnostics.php
và Joomla...txt) vào thư mục Joomla (nơi có file configuration.php)

• diagnostics.php: file dùng để kiểm tra


• joomla...txt: chứa danh sách các file của Joomla và mã kiểm tra tính toàn vẹn
(CHECKSUM)

Chạy Joomla Diagnostics

Mở đường dẫn http://website_cua_ban/diagnostics.php

• VD: http://vinaora.com/diagnostics.php
• VD: http://vinaora.com/joomla/diagnostics.php

Hình minh họa


Chú ý:
Vì lý do bảo mật bạn cần phải xóa ngay file diagnostics.php sau khi sử dụng.

Tham khảo thêm:


• http://www.joomla-addons.org/
• http://forum.joomla.org/index.php?topic=53052.0

Keyword:
• Joomla, joomla 1.0, joomla 1.5, diagnostics, joomla diagnostics, file

34. 9 bước bảo mật Website Joomla!


Friday, 08 June 2007 23:55

Bảo mật cho Website Joomla là một nhân tố quan trọng góp phần bảo vệ Website trước
các âm mưu tấn công có chủ đích cũng như vô tình, giúp cho Website luôn hoạt động ổn
định và bền vững. Nhiều quản trị Website chỉ đặt trọng tâm vào việc thiết kế, cập nhật
nội dung và giành thứ hạng cao trong các kết quả tìm kiếm mà quên đi việc đảm bảo an
toàn cho Website, tới khi sự việc xảy ra thì đã quá muộn. Bài viết dưới đây sẽ giới thiệu
tới các bạn 9 bước để bảo mật cho Website Joomla và giảm thiểu các nguy cơ tấn công
từ Internet.

1. Sao lưu toàn bộ Website theo định kỳ


Điều đầu tiên và cũng là quan trọng nhất là bạn phải thường xuyên sao lưu toàn bộ
Website bao gồm cả thư mục chứa Joomla và cơ sở dữ liệu MySQL. Hãy lập lịch ít
nhất một lần trong tuần (khuyến cáo là mỗi ngày một lần) để thực hiện sao lưu. Bạn sẽ
tiết kiệm được rất nhiều công sức và tiền của khi Website bị tấn công và chỉ mất vài phút
hoặc vài chục phút để khôi phục lại gần như toàn bộ.

2. Nâng cấp khi Joomla có phiên bản phát hành ổn định


mới nhất.
Nhóm phát triển nòng cốt của Joomla luôn phát hành đều đặn vài tháng một lần phiên
bản Joomla mới bao gồm cả các bản vá lỗi bảo mật và và các bản vá tăng cường hiệu suất
làm việc, do vậy bạn cần kiểm tra thường xuyên trên website của Joomla
(http://www.joomla.org) để kịp thời cập nhật phiên bản mới nhất.

3. Kiểm tra các thành phần mở rộng (module,


component, mambot/plugin) của các hãng thứ ba
Một số Website có thể bị tấn công thông qua các lỗi bảo mật nằm trong các thành phần
mở rộng được cài đặt thêm từ hãng thứ ba. Do vậy bạn cũng luôn phải chắc chắn rằng
nếu mình có cài đặt các thành phần mở rộng từ hãng thứ ba thì đó phải là các phiên bản
mới nhất.

Khuyến cáo: Hãy hạn chế tới mức tối đa việc cài đặt các thành phần mở rộng từ hãng thứ
ba. Ngoài ra khi bạn quyết định gỡ một thành phần mở rộng nào đó khỏi hệ thống thì bạn
cũng xóa cả các bảng cơ sở dữ liệu liên quan.

4. Quyền hạn đối với các thư mục


Sau khi cài đặt các thành phần mở rộng, bạn cần thiết lập quyền hạn đối với các thư mục
sang chế độ CHMOD 755.

Lưu ý: Nếu quá trình cài đặt các thành phần mở rộng (component/module/language...)
gặp trục trặc bạn cần chuyển các thư mục sau sang CHMOD 777. Khi cài đặt xong lại
thiết lập như trên (755 đối với thư mục và 644 đối với file)

components
language
modules
mambots
templates
administrator
administrator/backups
administrator/components
administrator/modules

5. Quyền hạn đối với các tệp


Thiết lập quyền hạn đối với tất cả các tệp của bạn sang chế độ CHMOD 644.
6. Quyền hạn đối với tệp configuration.php
Đây là một điều rất quan trọng. Bạn phải chắc chắn rằng mình đã thiết lập quyền hạn cho
tệp "configuration.php" sang CHMOD 644.

7. Bảo mật với .htaccess


Bản phát hành mới nhất của Joomla bao gồm cả phiên bản cập nhật cho tệp ".htaccess"
để làm giảm thiểu nguy cơ tấn công từ các hacker. Do vậy bạn cần phải truyền tệp
.htaccess này tới server của bạn và đổi quyền hạn sang CHMOD 644.

8. Joomla! Register Globals Emulation.


Bạn cần phải chắc chắn rằng biến "register global emulation" được thiết lập thành OFF.
Hãy mở tệp "global.php", tìm dòng define('RG_EMULATION', 1) và đổi nó thành

define('RG_EMULATION', 0)

9. Register Globals
Đảm bảo rằng Register Globals được thiết lập thành OFF. Nếu không hãy liên hệ với
Server của bạn để đổi nó thành OFF hoặc mở tệp .htaccess và thêm vào đoạn mã sau

php_flag register_globals off.

Tham khảo thêm


• Bảo mật cho Website Joomla! (tại diễn đàn chính thức của Joomla)

35. Bảo vệ file "configuration.php" khỏi các truy nhập


trái phép
Friday, 01 June 2007 17:38
Việc bảo vệ các file có nội dung quan trọng, các file cấu hình chứa các thông số của hệ
thống như: tên database, tên truy nhập, mật khẩu... là rất cần thiết và phải đặc biệt lưu
tâm. Trong Joomla có một file như thế - file "configuration.php". Để tăng cường bảo
mật cho file "configuration.php" này có nhiều cách, tuy nhiên có một cách hay được sử
dụng và đề cập trên các diễn đàn, đó là chuyển file "configuration.php" tới một nơi an
toàn, tránh sự nhòm ngó của hacker. Các bước thực hiện như sau:

Giả sử Website Joomla của bạn được đặt trong thư mục "/www/public_html"

www
---|public_html
--------------|configuration.php

• Chuyển file "configuration.php" ra khỏi "public_html", đặt nó vào một khu vực
khác do bạn tự tạo chẳng hạn "/www/private". Đặt cho nó một cái tên mới, chẳng
hạn "vinaora_joomla.conf".

www
---|private
-----------|vinaora_joomla.conf

• Tạo một file "configuration.php" thay thế file cũ nhưng chứa nội dụng sau:

<?php
require( '/www/private/vinaora_joomla.conf' );
?>

• Đừng để bất cứ khoảng trắng hoặc dòng trắng nào phía trước thẻ "<?php" và phía
sau thẻ "?>" và không được lưu nó với UTF-8 nếu không bạn sẽ nhận được thông
báo lỗi, đại loại như:

Warning: Cannot modify header information - headers already sent by (output started
at /home/xxxxx/public_html/configuration.php:2) in /home/xxxxx/public_html/index.php
on line 250

• Thiết lập (CHMOD) quyền chỉ đọc cho file "configuration.php" mới này để đảm
bảo nó không bị thay đổi nội dung.

• Khi bạn cần thay đổi các thiết lập cho Joomla hãy thực hiện bằng tay đối với file
"vinaora_joomla.conf"

Tham khảo thêm:

• http://forum.joomla.org/index.php/topic,122594.0.html
• http://www.hvaonline.net/hvaonline/posts/list/72.hva
Keywords: FAQ, security, config, configuration, configuration.php, public_html,
web_root, secure files

36. Bảo mật toàn tập cho Website Joomla


Wednesday, 30 May 2007 22:19

Bài viết này xin cung cấp cho bạn một loạt các thủ thuật để tăng cường bảo mật cho
Website Joomla! được trích dẫn từ diễn đàn Joomla! (http://forum.joomla.org). Có thể
một vài thủ thuật hơi khó thực hiện hoặc gây khó khăn, thâm chí là lỗi cho hệ thống của
bạn, tuy nhiên đừng nản chí , mọi cái đều có giá của nó. Nếu không thiết lập một vòng
đai an toàn cho Website sẽ có lúc bạn phải hối tiếc vì điều đó và thiệt hại có khi là không
tính đếm được. Hãy tiến hành ngay khi có thể.

01. Luôn cập nhật phiên bản mới nhất (Joomla 1.0.x, Joomla 1.5)

02. Chỉ nên download Joomla! từ website chính thức Joomlacode.org và kiểm tra mã xác
thực MD5 (nếu có)

03. Xóa thẳng tay những thư mục hoặc file không còn sử dụng. Sau khi cài đặt thành
công Joomla, bạn phải xóa toàn bộ thư mục "installation". Nếu bạn upload lên Host bộ
cài Joomla ở định dạng nén (*.zip), bạn cũng cần phải xóa bỏ file nén này. Tốt nhất là
không nên để lại file hoặc thư mục gì ngoài gói Joomla.

04. Tăng cường bảo vệ cho file cấu hình "configuration.php" bằng cách chuyển nó ra
khỏi thư mục public (thường có tên là public_html). [Xem thêm]

05. Đổi tên tài khoản truy nhập Joomla thay vì tài khoản mặc định "admin". Bước này
tưởng chừng rất đơn giản nhưng lại ngăn chặn được khá nhiều cuộc tấn công. [Xem
thêm]

06. Chặn các truy vấn nguy hiểm nhờ file ".htaccess" [Xem thêm]

07. Bảo vệ các thư mục nhậy cảm, chẳng hạn thư mục "administrator" thông qua file
".htaccess" [Xem thêm]

08. Giới hạn các IP truy cập tới các thư mục nhậy cảm thông qua file ".htaccess" [Xem
thêm]

09. Chọn Host có hỗ trợ PHP5.

10. Sử dụng các công cụ nổi tiếng như PHPsuExec, php_suexec và suPHP.

11. Nếu có thể, hãy yêu cầu Server nạp các module mod_security và mod_rewrite để
lọc và chặn các truy vấn nguy hiểm.
12. Sử dụng tài khoản MySQL đã được thiết lập quyền giới hạn (không sử dụng tài khoản
root).

13. Cố gắng nâng cấp các đoạn mã sang PHP5. Riêng gói Joomla thì bạn không cần lo
lắng vì ngay từ ban đầu nó đã được thiết kế tương thích với PHP5.

14. Cố gắng không sử dụng các thành phần mở rộng yêu cầu "safe_mode" của PHP.

15. Tắt Joomla! Register Globals Emulation trong file "globals.php". [Xem thêm]

define( 'RG_EMULATION', 0 );

16. Thiết lập quyền truy cập (CHMOD) các thư mục sang 755, các file sang 644. Bạn có
thể vào Site --> Global Configuration --> Server để thiết lập các quyền này cho thư
mục và file. Bạn cũng có thể sử dụng một công cụ FTP như FileZilla, SmartFTP,
WS_FTP, Net2FTP... để CHMOD. Lưu ý: Một số thành phần mở rộng trong quá trình cài
đặt có thể yêu cầu quyền truy cập 777.

17. Xóa bỏ toàn bộ các template không sử dụng khỏi thư mục "templates" và không đặt
bất cứ đoạn mã nhạy cảm nào vào các file trong template.

18. Thuê một chuyên gia bảo mật Joomla! để kiểm tra toàn bộ Website của bạn.

Tham khảo thêm:

• Joomla! Administrator's Security Checklist

37. Bảo mật cho trang quản trị administrator bằng mật
khẩu
Bạn muốn ngăn chặn việc truy cập trái phép vào vùng quản trị, trang administrator
(phần backend trong Joomla). Có nhiều giải pháp để thực hiện việc này. Bài viết này xin
giới thiệu một cách khá đơn giản nhưng lại hiệu quả với mục đích "Tăng cường thêm một
rào cản trước khi truy nhập được file index.php". Áp dụng trên Hosting chạy Apache
Server.

Cách thực hiện:


Copy đoạn mã sau và đặt vào đầu của file "index.php" trong thư mục
"Joomla\administrator\"

<?php

$name='439581667ef694b60d58f213cccf9503';
$pass='439581667ef694b60d58f213cccf9503';
if (!isset($_SERVER['PHP_AUTH_USER'])
|| md5($_SERVER['PHP_AUTH_USER'])!==$name
|| md5($_SERVER['PHP_AUTH_PW'])!==$pass)
{
header('WWW-Authenticate');
header('HTTP/1.0 401 Unauthorized');
exit('<a href="http://vinaora.com/">VINAORA</a> : Access Denied');
}
?>

Trong đó

username = vinaora
password = vinaora

Tham khảo thêm:


• Công cụ tạo mã hóa MD5 và một số loại mã hóa khác
• Làm sao để thay đổi đường dẫn tới trang admin

38.

You might also like