Đăng ký
Quên mật khẩu?
Trang Chủ
Đăng ký
Liên hệ
Diễn đàn
Góc điều hành FDTU
Góp ý - Hướng dẫn sử dụng forum
Chatbox
Các bạn vui lòng dùng từ ngữ lịch sự và có văn hóa,sử dụng Tiếng Việt có dấu chuẩn. Chúc các bạn vui vẻ!
05/01/2011 17:01
# 1
John_Lennon
Cấp độ:
7
- Kỹ năng:
7
Kinh nghiệm: 10/70 (14%)
Kĩ năng: 27/70 (39%)
Ngày gia nhập: 08/12/2009
Bài gởi: 220
Được cảm ơn: 237
Báo lỗi diễn đàn: Lỗi script encodeAspNet
Gửi BQT
Trong lúc chat, vô tình mình cần gõ 80%, nhưng thấy bị "đơ",
Mình vội soi code và phát hiện ra lỗi, à mà không phải lỗi mà là bug thuật toán.
Lỗi nằm ở chỗ thuận toán mã hóa kí tự ASCII sang mã Hex.
Cụ thể, lỗi phát sinh ở function replaceAll1(), được gọi bởi function aspneEncode()
(Chi tiết ở
http://forum.duytan.edu.vn/js/nt_script_util.js
)
Giải thích rõ hơn,
ở function replaceAll1 () có chứa vòng lặp do while
function replaceAll1(find, replace, val)
{
do {
main = val;
val = main.replace(find, replace)
}
while (val != main);
return val
}
Khi gọi function này ở function
function aspnetEncode(obj)
{
obj = replaceAll1('%', '%25', obj);
// .....
}
Như vậy, kí tự % sẽ được thay bằng %25
Nhìn vào function replaceAll1, dễ thấy, vòng do while sẽ lặp không-có-điểm-dừng, bởi dấu % được thay bởi %25,
kế đó lại thay thế dấu % trong %25 thành 1 %25 nữa, cho ra %2525, cứ như thế nó lại lặp tiếp, cho ra %252525, rồi %25252525.
Kết quả là không thoát khỏi vòng lặp dẫn đến bị treo trình duyệt.
Các bạn không tin thử gõ dấu % vào chatbox mà xem. À mà khuyến nghị là nếu fùng Firefox thì thử chứ dùng Chrome đừng thử :))
Thật ra cách giải quyết rất dễ. JavaScript đã hỗ trợ hàm encodeURIComponent() để mã hóa các kí tự ASCII rồi.
Có nghĩa là chỉ cần dùng 1 câu lệnh duy encodeURIComponent() sẽ giải quyết được toàn bộ mớ code lòng bòng trong file
http://forum.duytan.edu.vn/js/nt_script_util.js
rồi. (à mà trong file này có vài function không liên quan đến encode :D)
Mình cũng đã demo hàm encodeURIComponent() ở
http://dinhkhanh.info/dtu.php
các bạn có thể xem.
Rất mong BQT sửa gấp để "dân tình" chém gió mà không bị treo trình duyệt, hí hí.
Ngồi nhìn đời nơi cuối phố vắng...
Các thành viên đã Thank John_Lennon vì Bài viết có ích:
anh2bmw
,
zero910
,
TranVanVi
05/01/2011 17:01
# 2
TyLangTu
Cấp độ:
2
- Kỹ năng:
2
Kinh nghiệm: 15/20 (75%)
Kĩ năng: 11/20 (55%)
Ngày gia nhập: 13/11/2010
Bài gởi: 25
Được cảm ơn: 21
Phản hồi: Báo lỗi diễn đàn: Lỗi script encodeAspNet
gõ + thì sẽ thành
%2b, cái này , có thể dùng 1 số lệnh khác thì có thể dẫn đến treo trình duyệt:D
K16TPM.COM
Các thành viên đã Thank TyLangTu vì Bài viết có ích:
TranVanVi
05/01/2011 17:01
# 3
John_Lennon
Cấp độ:
7
- Kỹ năng:
7
Kinh nghiệm: 10/70 (14%)
Kĩ năng: 27/70 (39%)
Ngày gia nhập: 08/12/2009
Bài gởi: 220
Được cảm ơn: 237
Phản hồi: Báo lỗi diễn đàn: Lỗi script encodeAspNet
Trích:
gõ + thì sẽ thành
%2b, cái này , có thể dùng 1 số lệnh khác thì có thể dẫn đến treo trình duyệt:D
Một số chức năng nó không thể dùng mã ASCII được mà phải dùng mã hex nên mới cần encode.
Nó mã hóa để phân biệt giữa kí tự và phép toán á mà :D
Encode cũng thường gặp trong mã hóa cho đường dẫn url...
2b chính là mã hex của dấu + đó bạn ;) encode thêm % nữa là %2b
Hiện tại chỉ có bug ở dấu % thôi
Ngồi nhìn đời nơi cuối phố vắng...
Các thành viên đã Thank John_Lennon vì Bài viết có ích:
TranVanVi
05/01/2011 18:01
# 4
John_Lennon
Cấp độ:
7
- Kỹ năng:
7
Kinh nghiệm: 10/70 (14%)
Kĩ năng: 27/70 (39%)
Ngày gia nhập: 08/12/2009
Bài gởi: 220
Được cảm ơn: 237
Phản hồi: Báo lỗi diễn đàn: Lỗi script encodeAspNet
À mà chết, nếu dùng hàm
encodeURIComponent()
thì nó sẽ encode luôn kí tự tiếng Việt :))
Nhưng không sao, tạo 1 mảng các kí tự đặc biệt rồi thêm 1 lệnh
if
nữa là được á mà :D
Ngồi nhìn đời nơi cuối phố vắng...
Các thành viên đã Thank John_Lennon vì Bài viết có ích:
TranVanVi
05/01/2011 22:01
# 5
TranVanVi
Cấp độ:
13
- Kỹ năng:
22
Kinh nghiệm: 28/130 (22%)
Kĩ năng: 106/220 (48%)
Ngày gia nhập: 22/04/2010
Bài gởi: 808
Được cảm ơn: 2416
Phản hồi: Báo lỗi diễn đàn: Lỗi script encodeAspNet
Cảm ơn ý kiến đóng góp của các bạn, BQT sẽ tiến hành fix lỗi sớm
Một Ngày Mai tốt lành
Fone number: 0905936799 - 0905746789
YMmail:
tranvvi@yahoo.com.vn
Các thành viên đã Thank TranVanVi vì Bài viết có ích:
anh2bmw
Trả lời nhanh
Các bạn vui lòng dùng từ ngữ lịch sự và có văn hóa,sử dụng Tiếng Việt có dấu chuẩn.
Biểu tượng vui
Tùy chọn
Hiển thị chữ ký
Trích thông tin khi trả lời?
Copyright© Đại học Duy Tân 2010 - 2024