Xem điểm thi Đại Học 2010 miễn phí tại Học vui
Advanced Search

New Reply

Author Topic: Đọc cookies  (Read 645 times)

0 Members and 1 Guest are viewing this topic.

Đọc cookies
« on: July 25, 2009, 09:36:50 AM »

Code: [Select]
function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}

Ở đây mình có một hàm, hàm này sẽ đọc cookies theo tên, hàm này nhận vào một tham số c_name chính là tên cookies ta tìm, ta bắt đầu xem xét từng dòng:
if (document.cookie.length>0) dòng này xác định xem trong đối tượng cookies có lưu thông tin gì không, nếu trong đối tượng cookies có lưu thông tin, ta mới bắt đầu lục cookies của mình ra.

c_start=document.cookie.indexOf(c_name + "=");
Chắc hẳn các bạn còn nhớ bài nói về việc kiểm tra phần tử select của form. Việc này cũng tương tự như thế, tìm trong chuỗi cookies xem có tên cookies của ta hay không. dòng if (c_start!=-1) sẽ xem xét điều kiện trên.
   
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;

Ba dòng này xác định vị trí đầu tiên và cuối cùng của cookies, chắc các bạn đã hiểu cách nó tìm chứ!? ;)
return unescape(document.cookie.substring(c_start,c_end));
Dòng này trả giá trị của hàm trở về cookies được unescape (thực hiện hành động ngược lại với hàm escape ở bài trước)

ta có thể in ra và sử dụng cookies với đoạn javascript sau:
Code: [Select]
<script type="text/javascript">
username=getCookie('username');
if (username!=null && username!="")
  {
  alert('Welcome again '+username+'!');
  }
else
  {
  username=prompt('Please enter your name:',"");
  if (username!=null && username!="")
    {
    setCookie('username',username,365);
    }
  }
</script>
Sau khi đoạn code này chạy, nó sẽ khởi động hàm check cookies, nếu giá trị của cookies trả về khác rỗng thì in ra, ngược lại thì chạy hàm setCookie để thiết lập cookies. Hàm này mình viết hơi khác với ví dụ trong bài trước để thuận tiện hơn.
Code: [Select]
function setCookie(c_name,value,expiredays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
Tin hẳn các bạn đã đủ mọi điều để hiễu hàm trên, chỉ có lưu ý một chút:
((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
Dòng này là dạng viết tĩnh lược của câu lệnh if gồm có vế bên trong cặp dấu ngoặc( phía trước dấu ?) là điều kiện. Phía sau dấu ? là hai dòng le65ng cho trường hợp đúng và sai, phân cách bởi dấu ( : ).
Mình nhắm vào sự trong sáng của mã, và nói thật, viết mã như trên đối với mình không dễ dàng gì, mình luôn thích dùng câu lệnh if cơ bản, và dùng các dấu ngoặc móc giới hạn các dòng lệnh, viết thế tuy rườm rà, không "chuyên nghiệp" theo một số người, nhưng lại rất dễ nhìn dễ hiểu, đúng theo nghĩa cơ bản  :X

Sở dĩ mình dùng nó trong ví dụ này là vì mình muốn giới thiệu thêm cho các bạn, chứ như lúc mình tự học, nhìn thấy mấy dòng này trong code người ta viết thì cũng phải nhăn mặt tư duy dữ lắm!

http://hocvui.net/javascript/cookies.htm

Đây là trang ví dụ bao gồm tất cả những gì ta đã đề cùng làm việc ở đây, mời các bạn cùng xem qua nhé!



bookmark_facebook    bookmark_google    bookmark_twitter    bookmark_yahoo    bookmark_baihay    bookmark_linkhay    bookmark_tagvn    bookmark_zingme


  • Quy

    • Guest
nhan xet
« Reply #1 on: March 12, 2010, 07:15:59 PM »

Bai viet cua ban thuc su rat bo ich cho nhung nguoi moi hoc va ca nhung nguoi da dung lau nam. RAt cam on ban ve bai viet :X

New Reply
 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Name: Email:
Verification:
Một với 1 là mấy!? (trả lời = chử, VD: chín):

Thích hợp với các trình dyệt:

Firefox - Opera- Google Chrome

Diễn đàn Lê Thánh Tôn

Dạy học trực Tuyến Bacgiang gifted high school 4upro.info Driver4Vn