Thứ Hai, 16 tháng 12, 2013

Tự học Javascript – cơ bản về cú pháp Javascript

Khác với các giáo trình tự học Javascript khác, giáo trình tự học Javascript của Course Webs bắt đầu rất căn bản bằng bài cú pháp cơ bản của Javascript. Theo HHV đây là một cách tiếp cận khá hay bởi bắt tay ngay vào việc mà không có một quá trình chuẩn bị là thiếu sót lớn. Chậm mà chắc thôi nào!
blog thiết kế - thiết kế web trên nền blogger blogspot

1. Hai cách nhúng Javascript vào một trang HTML

Để chèn một đoạn mã javascript vào trang HTML thuần tuý ta phải dùng thẻ <script>... </script>. Sử dụng thẻ này ta cần phải có thuộc tính “language” để báo cho trình duyệt biết ngôn ngữ lập trình được sử dụng. Tuy nhiên trong các trang web XHTML (Blogger) chúng ta cần phải sử dụng thuộc tính type = "text/javascript" thay thế cho “language”
Chúng ta sẽ viết đoạn mã javascript bên trong thẻ <script>... </script> như sau
Data provided by Pastebin.com - Download Raw - See Original
  1. <script type = "text/javascript">
  2.  
  3. // code javascript
  4.  
  5. </script>
Đoạn code Để viết code chúng ta cần có trình soạn thảo text cơ bản như Notepad. Tuy nhiên hiện tại có nhiều chương trình soạn thảo code chuyên nghiệp như Textpad, Editplus. Blog Thiết Kế khuyến cáo các bạn sử dụng Notepad++. Để kiểm tra các đoạn code chúng ta cần sử dụng các trình duyệt phổ thông như IE Firefox hoặc Chrome…
Dưới đây là ví dụ khi nhúng đoạn code vào một trang XHTML
Data provided by Pastebin.com - Download Raw - See Original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>Cod JavaScript</title>
  6. </head>
  7. <body>
  8.     <script type="text/javascript">
  9.         document.write("The text will be displayed");
  10.     </script>
  11. </body>
  12. </html>
Cũng đoạn mã đó nhúng vào một trang HTML
Data provided by Pastebin.com - Download Raw - See Original
  1. <html>
  2. <head>
  3. <title>Cod JavaScript</title>
  4. </head>
  5. <body>
  6.     <script type="text/javascript">
  7.         document.write("The text will be displayed");
  8.     </script>
  9. </body>
  10. </html>
Trong hai đoạn code trên có dùng một hàm phổ biến là document.write dùng để viết ra một đoạn text hoặc mã được chỉ định. Kết quả đoạn code trên sẽ xuất ra màn hình thông điệp.

The text will be displayed

Còn một cách khác để nhúng một đoạn mã javascript vào trang HTLM là sử dụng các tập tin javascript bên ngoài. Khi sử dụng tập tin bên ngoài là có thể dùng chung một đoạn mã javascript cho nhiều trang web khác nhau. Nếu phải sửa đổi chúng ta chỉ cần sử đổi một lần cho tất cả các trang dùng chung tập tin javascript
Nếu sử dụng cách thức này thì cần thêm thuộc tính "scr" để chỉ định địa chỉ file javascript được sử dụng. Ví dụ
Data provided by Pastebin.com - Download Raw - See Original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="ro">
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>Cod JavaScript</title>
  6. </head>
  7. <body>
  8.     <script src="cod.js" type="text/javascript">     </script>
  9. </body>
  10. </html>

2. Giấu một đoạn code đối với trình duyệt cũ

Một vài trình duyệt không hiểu các đoạn mã javascript và hiển thị nó trên trang web như là các đoạn text thông thường. Để tránh điều này ta sử dụng các thẻ chú thích của HTML, xem ví dụ
Data provided by Pastebin.com - Download Raw - See Original
  1. <script type="text/javascript">
  2.  
  3. <!-- Codul scriptului -->
  4.  
  5. </script>

3. Một số quy ước

Bất cứ ngôn ngữ lập trình nào cũng có các nguyên tắc và quy ước riêng hãy ghi nhớ cẩn thận những điều sau đây nó sẽ giúp bạn rất nhiều trong việc coding sau này:
a) Cẩn thận viết thường và viết hoa. Ví dụ "examples” hoàn toàn khác với “Examples"
b) Dấu chấm phẩy ( ; ): mọi câu lệnh đều kết thúc bằng dấu châm phẩy. Ví dụ: var1 = 3; var2 = 8;).
c) Khoảng trắng: javascript không quan tâm đến các khoảng trống giữa các ký tự. Người ta thường dùng spacebar và tab để phân biệt các đoạn code giúp dễ đọc. javascript chỉ hiểu 1 khoảng trắng giữa chuỗi ký tự. Ví dụ: var1  =  2; cũng được hiểu là var1 = 2;
d) Dấu nháy: dấu nháy đơn ( ‘ ) và nháy đôi ( “ ) đều được dùng để phân định một chuỗi ký tự. Ví dụ: 'I learn JavaScript' or "I learn JavaScript"
e) Một số ký tự đặt biệt: Khi viết code đôi khi chúng ta cần dùng đến các ký tự đặc biệt trong dữ liệu đầu ra. Trong trường hợp này ta phải sử dụng ký tự dấu gạch chéo ngược ( \ ) trước ngay ký tự đặc biệt đó.
  • \b – backspace
  • \f - new page
  • \n - new line
  • \r - indicate a carriage return
  • \t - indicate a pressing TAB key
  • \\ - a backslash character
  • \' - indicate an apostrophe (single quotes)
  • \" - double quotes
Ví dụ nếu bạn hiển thị lên trình duyệt một đoạn text sử dụng hàm document.write trong đoạn text này có một số ký tự đặc biệt như

"JavaScript" Course \ blog.nguoiaolam.net

 Để trình duyệt có thể hiểu ý bạn cần viết đoạn code đó như sau
Data provided by Pastebin.com - Download Raw - See Original
  1. <script type = "text/javascript">
  2.  
  3. document.write ("\" JavaScript \" Course \\ blog.nguoiaolam.net");
  4.  
  5. </script>
f) Ghi chú: việc sử dụng ghi chú trong đoạn mã là cần thiết để phân biệt làm rõ vai trò, chức năng của các hàm, biến nhất định hoặc đơn giản là giải thích ý nghĩa một đoạn mã nào đó.
  • Để ghi chú cho một dòng đơn ta dùng 2 dấu gạch chéo // . Tất những ký tự nào nằm bên phải cùa dấu // được hiểu là một dòng ghi chú.
  • Để ghi chú nhiều hơn một dòng ta đặt đoạn ghi chú giữa 2 ký hiệu /* … */
Data provided by Pastebin.com - Download Raw - See Original
  1. // Comment on a single line
  2.  
  3. /* comment on ...
  4. multiple lineas
  5. ... */
g) Cách đặt tên các biến và hàm: Tên của các biến và hàm phải tuân theo nguyên tắc sau
  • Ký tự đầu tiên phải là một chữ cái một dấu gạch dưới ( _ ) hoặc một dấu đô la ( $ )
  • Ký tự đầu tiên không phải là một con số
  • Tên không nên chứa các khoảng trắng
  • Không được sử dụng các tên có trung với các từ khoá thông dụng của javascript như “array”, “status”, “alert”… Vì các trình duyệt sẽ không nhận ra được sự khác biệt.

Chủ Nhật, 15 tháng 12, 2013

PHP 5.4 và những điều nên biết

PHP 5.4 ra đời là một bước tiến quan trọng kể từ phiên bản 5.3- các tính năng mới sẽ được giữ lại trong phiên bản PHP 6 sau này (được hỗ trợ đầy đủ Unicode). Bản nâng cấp mang ý nghĩa quan trọng gần đây nhất là hoàn thiện tính năng cùng với việc bỏ hẳn các chức năng bị phản đối, kết quả là tận dụng triệt để runtime (tăng 20% tốc độ và giảm bộ nhớ sử dụng).
Những cải tiến và tính năng mới
Những tính năng mới quan trọng bao gồm các trait, cú pháp array rút gọn, webserver nhúng sẵn cho phép test code nhanh chóng, sử dụng từ khóa $this trong các closure, truy cập các lớp thành viên vào trong hiện thể, short_open_tag luôn được bật sẵn và còn nhiều hơn thế nữa!
Đáng nói ở đây, PHP 5.4.0 đã nâng cấp hiệu suất, memory footprint và chỉnh sửa trên 100 bug. Bỏ các tính năng  đáng chú ý bao gồm register_globals, magic_quotes (về thời gian) và safe_mode. Điều đáng chú ý ở đây nữa là thực tế sự hỗ trợ multibyte đã được kích hoạt mặc định và default_charset đã thay đổi từ ISO-8859 thành UTF-8.
"Content-Type: text/html; charset=utf-8 thì luôn được gởi đi, vì vậy không cần thiết phải cài đặt thẻ HTML meta hoặc gởi thêm các header để tương thích với UTF-8"
Traits
Thế mạnh của các trait thể hiện rõ khi nhiều class dùng chung một nhóm chức năng.
Trait (chuyển sang phong cách kế thừa hàng ngang thay vì kiểu phả hệ trước đây) là một tập hợp các phương thức với các cấu trúc tương tự như một class (nhưng không thể được khởi tạo), nó cho phép các nhà phát triển có thể dùng lại các tập hợp phương thức một cách tự do ở trong các class độc lập. PHP là một ngôn ngữ đơn kế thừa, do vậy một subclass có thể thừa hưởng từ một superclass duy nhất; đó là lí do vì sao trait xuất hiện.
Cách dùng tối ưu nhất của traits được thể hiện khi nhiều class dùng chung một nhóm chức năng. Ví dụ, hình ảnh chúng ta tạo ra trên các website và cần sử dụng cả API của Facebook lẫn Twitter. Chúng ta sẽ tạo 2 class và có một cURL bao gồm chức năng/phương thức. Thay vì thường sử dụng phương thức thực hiện copy & paste ở 2 class, chúng ta sẽ sử dụng Trait (copy & paste, cách trình biên dịch). Theo cách này, chúng ta sẽ tận dụng code và làm theo đúng quy tắc DRY (Don’t Repeat Yourself).
Dưới đây là ví dụ:
/** cURL wrapper trait */
trait cURL
{
    public function curl($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output;
    }
}
/** Twitter API Class */
class Twitter_API
{
    use cURL; // use trait here
    public function get($url)
    {
        return json_decode($this->curl('http://api.twitter.com/'.$url));
    }
}
/** Facebook API Class */
class Facebook_API
{
    use cURL; // and here
    public function get($url)
    {
        return json_decode($this->curl('http://graph.facebook.com/'.$url));
    }
}
$facebook = new Facebook_API();
echo $facebook->get('500058753')->name; // Rasmus Lerdorf
/** Now demonstrating the awesomeness of PHP 5.4 syntax */
echo (new Facebook_API)->get('500058753')->name; // Rasmus Lerdorf
$foo = 'get';
echo (new Facebook_API)->$foo('500058753')->name; // and again, Rasmus Lerdorf
echo (new Twitter_API)->get('1/users/show.json?screen_name=rasmus')->name;
// and yet again, Rasmus Lerdorf
// P.S. I'm not obsessed with Rasmus :)

Bạn vẫn chưa hiểu? Ví dụ này sẽ đơn giản và dễ hiểu hơn!
trait Net
{
    public function net()
    {
        return 'Net';
    }
}

trait Tuts
{
    public function tuts()
    {
        return 'Tuts';
    }
}
class NetTuts
{
    use Net, Tuts;
    public function plus()
    {
        return '+';
    }
}
$o = new NetTuts;
echo $o->net(), $o->tuts(), $o->plus();
echo (new NetTuts)->net(), (new NetTuts)->tuts(), (new NetTuts)->plus();
Gợi ý : Hằng số bất biến của các trait là __TRAIT__.
Nhúng sẵn webserver CLI
Trong phát triển web, người bạn thân thiết của PHP là Apache HTTPD Server. Dù đôi lúc nó có thể bị hủy để cài đặt httpd.conf cho việc sử dụng trong môi trường phát triển, khi bạn thật sự cần web server nhỏ mà có thể khởi động nó chỉ bằng một dòng lệnh đơn giản. May mắn thay, PHP 5.4 ra đời cùng với việc nhúng sẵn webserver CLI.
Web server CLI PHP được thiết kế dành cho các mục đích phát triển và không nên dùng để chạy các hệ thống đã hoàn thiện.
Chú ý : Hướng dẫn dưới dây dành cho Window
Bước 1 – Tạo thư mục gốc Document, File Router và File Index
Vào thư mục ổ cứng chính (thường là C:\). Tạo một đường dẫn/thư mục, có tên gọi là public_html. Tạo một file mới trong thư mục có tên gọi là router.php. Copy nội dung dưới đây và paste nó vào trong file vừa tạo mới.
// router.php
if (preg_match('#\.php$#', $_SERVER['REQUEST_URI']))
{
    require basename($_SERVER['REQUEST_URI']); // serve php file
}
else if (strpos($_SERVER['REQUEST_URI'], '.') !== false)
{
    return false; // serve file as-is
}
?>
Bây giờ, tạo một file khác, gọi là index.php. Copy nội dung ở dưới và lưu file.
// index.php
echo 'Hello Nettuts+ Readers!';
?>
Mở file php.ini (nó nằm trong đường dẫn cài đặt PHP –ví dụ: C:\php).
Tìm phần cài đặt include_path (nó nằm ở vào khoảng dòng thứ 708). Thêm C:\public_html vào cuối chuỗi giữa các dấu nháy, cách nhau bởi dấu phẩy. Kết quả cuối cùng sẽ giống như vậy:
include_path = ".;C:\php\PEAR;C:\public_html"
Lưu và đóng file. Chuyển qua bước tiếp theo.
Bước 2 – Chạy web server
Mở bảng gõ lệnh (Windows + R, gõ vào CMD và nhấn Enter); tùy thuộc vào phiên bản Windows, bạn sẽ thấy dòng như dưới đây,
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\nettuts>

Thay đổi đường dẫn hiện tại đến cài đặt PHP theo ví dụ sau:
C:\Documents and Settings\nettuts>cd C:\php
C:\php>
Phần quan trọng nhất- chạy web-server. Copy đoạn dưới…
php -S 0.0.0.0:8080 -t C:\public_html router.php
…và dán nó vào dòng lệnh ( click chuột phải, chọn Paste để paste). Nhấn Enter. Nếu nó hoạt động, bạn sẽ thấy các dòng giống như ở dưới. Đừng đóng bảng gõ lệnh, nếu bạn làm vậy,  bạn sẽ thoát khỏi web-server.
C:\php>php -S 0.0.0.0:8080 -t C:\public_html router.php
PHP 5.4.0 Development Server started at Fri Mar 02 09:36:40 2012
Listening on 0.0.0.0:8080
Document root is C:\public_html
Press Ctrl-C to quit.
Mở trên trình duyệt của bạn địa chỉ http://localhost:8080/index.php và bạn sẽ thấy:
Hello Nettuts+ Readers!
Mẹo 1: Tạo một file php-server với nội dung sau: C:\php\php -S 0.0.0.0:8080 -t C:\public_html router.php. Click đôi và bây giờ, máy chủ đã được tải lên và hoạt động.
Mẹo 2: Dùng 0.0.0.0 thay cho localhost nếu như bạn đoán trước được máy chủ của bạn sẽ truy cập từ Internet.
Cú pháp Array rút gọn
PHP 5.4 đưa ra một cú pháp array mới ngắn hơn
$fruits = array('apples', 'oranges', 'bananas'); // "old" way
// The same as Javascript's literal array notation
$fruits = ['apples', 'oranges', 'bananas'];
// associative array
$array = [
    'foo' => 'bar',
    'bar' => 'foo'
];
Hãy lưu ý rằng phương thức cũ vẫn được sử dụng và sẽ luôn như vậy. Đây chỉ đơn giản là sự lựa chọn.
Array Dereferencing
Không còn các biến tạm thời khi xử lý với các array!
Hãy tưởng tượng rằng chúng ta muốn gọi tên lót của Alan Mathison Turing:
echo explode(' ', 'Alan Mathison Turing')[1]; // Mathison
Rất hay, nhưng trước đây nó không dễ dàng như vậy. Trước 5.4, chúng ta phải:
$tmp = explode(' ', 'Alan Mathison Turing');
echo $tmp[1]; // Mathison

Những gì chúng ta cần làm bây giờ là lấy họ (thành phần cuối trong array)
echo end(explode(' ', 'Alan Mathison Turing')); // Turing
Câu lệnh này hoạt động tốt tuy nhiên nó lại tạo ra một lỗi E_STRICT (Các tiêu chuẩn Strict: các biến thể chỉ nên được thông qua bằng cách tham chiếu, do đó nó đã trở thành một phần của E_ALL trong error_reporting
Đây là một ví dụ cho ý trên:
function foobar()
{
    return ['foo' => ['bar' => 'Hello']];
}
echo foobar()['foo']['bar']; // Hello
Từ khóa $this trong hàm nặc danh
Bây giờ bạn có thể tham chiếu đến một đối tượng hiện thể từ các hàm nặc danh (được biết đến là các closure) bằng cách dùng $this
class Foo
{
    function hello() {
        echo 'Hello Nettuts!';
    }
    function anonymous()
    {
        return function() {
            $this->hello(); // $this wasn't possible before
        };
    }
}
class Bar
{
    function __construct(Foo $o) // object of class Foo typehint
    {
        $x = $o->anonymous(); // get Foo::hello()
        $x(); // execute Foo::hello()
    }
}
new Bar(new Foo); // Hello Nettuts!

Lưu ý rằng nó có thể được ưu tiên hoàn thành đối với 5.4, nhưng nó cũng có thể bị hủy.
function anonymous()
{
    $that = $this; // $that is now $this
    return function() use ($that) {
        $that->hello();
    };
}
short_open_tag luôn bật sẵn
Không để ý tới cài đặt của php.ini, short_open_tag, = (mở tag và echo PHP) sẽ luôn luôn có sẵn, điều này có nghĩa là an toàn khi sử dụng
Sự biểu diễn số nhị phân
Chỉ có 0b10 loại người đó chính là hiểu số nhị phân và số còn lại là không hiểu.
Cho đến bây giờ, các số nguyên được chia thành các hệ thập phân (cơ số 10), hệ thập lục phân (cơ số 16), hệ bát phân (cơ số 8) hoặc hệ nhị phân (cơ số 2),  thứ tự tùy chọn bằng các kí hiệu ( -  hoặc +). Để sử dụng hệ bát phân, con số trước phải bắt đầu bằng 0 (số 0). Để sử dụng hệ thập lục phân, con số trước phải bắt đầu bằng 0x.
Để dùng hệ nhị phân, con số trước bắt đầu với 0b.
Ví dụ: biểu diễn số 31 (thập phân)
echo 0b11111; // binary, introduced in PHP 5.4
echo 31; // duh
echo 0x1f; // hexadecimal
echo 037; // octal
Callable Typehint
Typehint dành cho những ai mong muốn PHP trở thành một ngôn ngữ định kiểu mạnh hơn. Trong PHP 5.1, Type Hint chỉ hỗ trợ object và array . Sang PHP 5.4, có thêm callable. Typehint truyền thống vẫn chưa hỗ trợ kiểu int và string.
function my_function(callable $x)
{
    return $x();
}
function my_callback_function(){return 'Hello Nettuts!';}
class Hello{static function hi(){return 'Hello Nettuts!';}}
class Hi{function hello(){return 'Hello Nettuts!';}}
echo my_function(function(){return 'Hello Nettuts!';}); // anonymous function
echo my_function('my_callback_function'); // callback function
echo my_function(['Hello', 'hi']); // class name, static method
echo my_function([(new Hi), 'hello']); // class object, method name
Tính toán thời gian với độ chính xác cao
$_SERVER['REQUEST_TIME_FLOAT'] đã được thêm vào với độ chính xác một phần triệu của giây (float). Điều này thật sự rất cần thiết khi bạn muốn tính toán thời gian thực thi script.
echo 'Executed in ', round(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'], 2), 's';
__destruct() (hoặc Tóm tắt)
Nhìn chung, PHP 5.4 đã có những cái thiện đáng kể. Vào lúc này đây, tùy thuộc vào bạn nếu bạn muốn một bản copy mới tinh từ trang php.net, hãy lấy về và viết ra những dòng code PHP hướng đối tượng tuyệt vời và chất lượng hơn.
Theo bạn thì PHP 5.5 sẽ mang đến cho chúng ta những chức năng gì mới và bạn đang mong đợi gì từ nó?

Thứ Năm, 12 tháng 12, 2013

PHÂN BIỆT GIỮA COOKIE VÀ SESSION

Cookie 
là 1 đoạn dữ liệu được truyền đến browser từ server, đoạn dữ liệu này sẽ được browser lưu trữ (trong memory hoặc trên đĩa) và sẽ gởi ngược lên lại server mỗi khi browser tải 1 trang web từ server.
Những thông tin được lưu trữ trong cookie hoàn toàn phụ thuộc vào website trên server. Mỗi website có thể lưu trữ những thông tin khác nhau trong cookie, ví dụ thời điểm lần cuối bạn ghé thăm website, đánh dấu bạn đã login hay chưa, v.v...
Cookie được tạo ra bởi website và gởi tới browser, do vậy 2 website khác nhau (cho dù cùng host trên 1 server) sẽ có 2 cookie khác nhau gởi tới browser. Ngoài ra, mỗi browser quản lý và lưu trữ cookie theo cách riêng của mình, cho nên 2 browser cùng truy cập vào 1 website sẽ nhận được 2 cookie khác nhau.

=> Cookie được sinh ra bởi trình duyệt(máy client)

Session 
Là khoảng thời gian người sử dụng giao tiếp với 1 ứng dụng. Session bắt đầu khi người sử dụng truy cập vào ứng dụng lần đầu tiên, và kết thúc khi người sử dụng thoát khỏi ứng dụng. Mỗi session sẽ có một định danh (ID), 1 session khác nhau sẽ có 2 ID khác nhau. Trong ngữ cảnh ứng dụng web, website sẽ quyết định khi nào session bắt đầu và kết thúc.
Trong 1 session, website có thể lưu trữ một số thông tin như đánh dấu bạn đã login hay chưa, những bài viết nào bạn đã đọc qua, v.v...

=> Session được sinh ra bởi webserver(máy Server)

Điểm giống và khác nhau giữa Cookie và Session
Cookie và Session đều có chung mục đích là lưu giữ data để truyền từ 1 trang web sang 1 trang web khác (trên cùng website). Nhưng phước thức lưu trữ và quản lý data của Cookie và Session có phần khác nhau.
Cookie sẽ được lưu trữ tại browser, do browser quản lý và browser sẽ tự động truyền cookie ngược lên server mỗi khi truy cập vào 1 trang web trên server.
Dữ liệu lưu trữ trong Session sẽ được ứng dụng quản lý, trong ngữ cảnh web, ứng dụng ở đây sẽ là website và webserver. Browser chỉ truyền ID của session lên server mỗi khi truy cập vào website trên server.

Mối liên hệ giữa Session và Cookie
Mỗi Session gắn với 1 định danh (ID). ID sẽ được tạo ra trên server khi session bắt đầu và được truyền cho browser. Sau đó browser sẽ truyền lại ID này lên server mỗi khi truy cập vào website. Như vậy ta có thể thấy rằng sẽ rất tiện nếu như Session ID được lưu trữ trong Cookie và được browser tự động truyền lên server mỗi khi truy cập vào website.

Sử dụng Cookie hay Session?
Sử dụng Session hoặc Cookie là tuỳ vào lựa chọn của Lập trình viên, tuy nhiên Session thường được ưa chuộng hơn Cookie vì một số lý do sau:

*  Trong một số trường hợp Cookie không sử dụng được. Có thể browser đã được thiết lập để không chấp nhận cookie, lúc đó session vẫn sử dụng được bằng cách truyền session ID giữa các trang web qua URL, ví dụ: script.aspx?session=abc123.
*  Lượng data truyền tải giữa browser và server: chỉ mỗi session ID được truyền giữa browser và server, data thực sự được website lưu trữ trên server.
*  Bảo mật: càng ít thông tin được truyền tải qua lại giữa browser và client càng tốt, và càng ít thông tin được lưu trữ tại client càng tốt.