III. Các đối tượng Cookies, Senssion, Response, Requets
Đối tượng Cookies
Cookie là những file nhỏ chứa một số các thông tin truy cập Web.Các cookie do Websever phát sinh, lưu giữ lại, sau đó sẽ được đọc ở những lần truy cập về sau. Cookie đơn thuần chỉ là thông tin ghi nhận lại những động tác truy cập web của khách . Khi tồn tại trên đĩa cứng, cookie trở thành các thỉnh cầu của giao thức HTTP, được gởi đến Webserver.
Để có thể phát sinh một cookie bạn cần phải sử dụng hàm setcook() như sau:
Setcookie (name, value, time_to_expre, path, domain, security, setting);
Ví dụ:
Setcookie (“my_cookie”, “my_id”, time () + (60*60*24*30), “/”, “mydomain.com”, 0)
Lệnh trên sẽ phát sinh một cookie với các chức năng sau:
§ Chứa một biến tên là my_cookie
§ Giá trị của my_cookie là my_id
§ Cookie tồn tại trong vòng 30 ngày kể từ ngày nó phát sinh (time () + (30*24*60*60) ngày giờ hiện tại + 30 ngày được quy ra giây).
§ Cookie có tác dụng đến tất cả các trang trong domain. Bạn có thể hạn chế lại bằng các chỉ ra đường dẫn đến một số trang nào đó trong domain.
§ Nó sẽ hiện diện trong tất cả các website có địa chỉ http://mydomain.com
§ Không có xác lập đặc biệt nào về bảo mật.
Một khi cookie được xác lập, các biến phát sinh từ cookie có tác dụng giống như biến phát sinh từ form mạ. Chúng sẽ hiện diện với chức năng là biến global. Sau khi script PHP xác lập cookie, các script khác trong domain có thể truy cập cookie một cách tự động.
Nếu như bạn muốn cẩn thận hơn để $mycookie không xung đột với mồt biến nào khác cũng có tên $mycookie, bạn có thể truy xuất nó thông qua mảng HTTP_COOKIE_VARS và sử dụng lệnh: HTTP_COOKIE_VARS[“mycookie”].
Bạn có thể xác lập cookie cung cấp khả năng truy xuất như là một mảng:
setcookie (“mycookie[first]”, “dddd”, time () + 259200, “/ ” , “192.168.1.1”, 0);
setcookie (“mycookie[second]”, “my_second_id”, time () + 259200, “/ ” , “192.168.1.1”, 0);
Cả hai biến đều có thể truy cập đến như là một mảng liên hợp.
Đối tượng Session
Session là một phiên làm việc giữa từng người dùng và web server, nó bắt đầu khi người đó lần đầu tiên truy cập tới 1 trang web trong website và kết thúc khi người đó rời khỏi website hoặc không tương tác với website trong một khoảng thời gian nhất định (time out). Như vậy tại một thời điểm một website có bao nhiêu người truy cập thì có bấy nhiêu phiên ứng với mỗi người, các phiên này độc lập nhau. Để lưu những thông tin tác dụng trong 1 phiên, người ta dùng đối tượng Session, ví dụ khi một user bắt đầu session với việc login vào hệ thống, và user đã login đó cần được hệ thống ghi nhớ trong toàn phiên làm việc (nhằm tránh việc người dùng phải đăng nhập lại mỗi khi đưa ra một request).Giá trị của biến kiểu session có phạm vi trong tất cả các trang ASP của ứng dụng, nhưng không có tác dụng đối với phiên làm việc khác.
Ví dụ, sử dụng biến session sau đây đếm số lần 1 người đã truy cập vào trang web:
Home.asp
Home.asp
Code: <% session (“x”) = session (“x”) + 1 %>
session(“x”) đại diện cho số lần mà một user đã truy cập vào trang home.asp. Với 2 người dùng khác nhau thì giá trị session(“x”) lại khác nhau.
Thật vậy , A có thể truy cập 10 lần (session(“x”) =10) trong khi B có thể truy cập 2 lần thôi (session(“x”) =2)
Server kết thúc và hủy bỏ đối tượng session khi:
Người dùng không triệu gọi các trang của ứng dụng hoặc cập nhật làm mới(refresh) lại thông tin của trang trong một thời gian nhất định. Khi một session hết thời gian hiệu lực nó sẽ được xem như hết hạn sử dụng ,tất cả các biến lưu trong session và bản thân session sẽ bị hủy bỏ. Có thể kiểm tra và tăng giảm thời gian Timeout của Session tính bằng giây như sau:
Code: <% Session.Timeout = 500 %>
Trang ASP gọi đến phương thức Abandon của Session .
Code:<% Session.Abandon %>
Việc khởi tạo và kết thúc 1 biến session có thể viết trong các hàm sự kiện Session_OnStart và Session_OnEnd được định nghĩa trong file global.asa
Sử dụng SESSION
Khi bạn tạo 1 biến và lưu nó vào 1 session, bạn có lẽ muốn dùng nó sau này, tuy nhiên, trước khi bạn dùng biến session đó, bạn nên kiểm tra nó đã dc khởi tạo hay chưa.
Thao tác này được thực hiện thông qua hàm isset, isset là 1 hàm kiểm tra bất kì biến nào và nó đã được khởi tạo và gán giá trị hay chưa.
Qua nhưng ví dụ trên, chúng ta có thể tạo 1 bộ đếm đơn giản cho 1 trang bằng cách sử dùng isset để kiểm tra nó đã được tạo hay chưa và gán giá trị cho nó. Đây là 1 ví dụ:
PHP Code:
Code:
<?php
session_start();
<?php
session_start();
session_register($_SESSION['views']);
if(isset($_SESSION['views']))
$_SESSION['views'] = $_SESSION['views']+ 1;
if(isset($_SESSION['views']))
$_SESSION['views'] = $_SESSION['views']+ 1;
else
$_SESSION['views'] = 1;
$_SESSION['views'] = 1;
echo “views = “. $_SESSION['views'];
?>
Trong lần chạy đầu tiền của trang câu lệnh If sẽ trả về false vì chưa có biến session [views] nào được tạo cả. tuy nhiên, khi bạn refresh lại trang đó, thì câu lệnh if sẽ trả về giá trị true và biến đếm counter sẽ tăng lên 1 đơn vị. và sẽ tăng cho mỗi lần chạy của trang đó lên 1.
Xóa và Hủy Session
Mặt dù dữ liệu trong session chỉ mang tính chất tạm thời và nó ko yêu cầu phải xóa sau khi sử dụng, nhưng có thể trong trường hợp nào đó bạn phải xóa dữ liệu của nó cho mục đích của bạn.
Hãy tưởng tượng bạn đang điều hành 1 doanh nghiệp online, và 1 thanh viên đang dùng website của bạn mua 1 món hàng. Thành viên đó đã hoàn tất việc mua hàng (phiên giao dịch) trên website, do đó , bạn phải xóa mọi thứ trong session sau khi việc này hoàn tất.
PHP Code:
<?php
session_start();
if(isset($_SESSION['cart']))
unset($_SESSION['cart']);
?>
Bạn cũng có thể hủy hoàn toàn các session bằng cách gọi hàng session_destroy
PHP Code:
Code:
<?php
session_start();
session_destroy();
?>
Destroy sẽ reset session của bạn, do đó không nên gọi hàm này trước khi bạn còn muốn thao tác lên dữ liệu chứa trong session đó.
Chú ý khi sử dụng hàm session_start phải được viết trên đầu trang php và nếu khi xuất trên trang web có dòng báo lỗi thì ta có thể khai báo như sau:
<?php
ob_start();
session_start();
ob_clean(); ?>
Đ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 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.php?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.
Đối tượng Response
Đối tượng Response dùng để gửi các đáp ứng của server cho client. Chúng ta thường dùng một
số lệnh Response sau:
Response.Write
Đưa thông tin ra màn hình trang web
Ví dụ để đưa câu chào Hello ra màn hình ta dùng lệnh sau:
Code: <% response.write “Hello” %>
Hiển thị thời gian trên server ra màn hình:
Code:<% response.write now %>
hoặc <%=now%>
now là hàm lấy ngày giờ hệ thống trên server
Response.Redirect
Chuyển xử lý sang một trang Asp khác.
Ví dụ trang xulyform.asp sau khi kiểm tra form đăng nhập thấy người dùng không có quyền vào website thì nó sẽ chuyển cho file Error.asp(file này hiển thị một thông báo lỗi user không có quyền truy cập)
Code: <% Response.redirect “error.asp” %>
Response.End
Ngừng xử lý các Script. Dùng lệnh này khi muốn dừng xử lý ở một vị trí nào đó và bỏ qua các mã lệnh ASP ở phía sau. Đây là cách rất hay dùng trong một số tình huống, chẳng hạn như debug lỗi
Đối tượng Request
Request và Response là 2 đối tượng được dùng nhiều nhất trong lập trình ASP, dùng trao đổi dữ liệu giữa trình duyệt và server. Request cho phép lấy về các thông tin từ client. Khi browser gửi một yêu cầu trang web lên server ta gọi là 1 request
Chúng ta thường sử dụng các lệnh request sau:
Request.QueryString
Cho phép server lấy về các giá trị được gửi từ người dùng qua URL hoặc form (method GET).
Ví dụ ở trang home.asp chúng ta đặt một dòng liên kết sang trang gioithieu.asp với thẻ sau:
<a href=”gioithieu.asp?tacgia=Tran Van A”>Nhấn vào đây để sang trang giới thiệu</a>
biến “tacgia” có giá trị là “Tran Van A” được người dùng gửi tới server kèm theo URL. (người dùng có thể gõ thẳng địa chỉ “http://localhost/alias/gioithieu.asp?tacgia=Tran Van A” trên thanh Address của trình duyệt)
Ví dụ ở trang home.asp chúng ta đặt một dòng liên kết sang trang gioithieu.asp với thẻ sau:
<a href=”gioithieu.asp?tacgia=Tran Van A”>Nhấn vào đây để sang trang giới thiệu</a>
biến “tacgia” có giá trị là “Tran Van A” được người dùng gửi tới server kèm theo URL. (người dùng có thể gõ thẳng địa chỉ “http://localhost/alias/gioithieu.asp?tacgia=Tran Van A” trên thanh Address của trình duyệt)
Server muốn nhận lại giá trị này thì dùng request.QueryString ở trang gioithieu.asp
Code:
<% dim a a=request.querystring(“tacgia”) ‘lúc này a có gía trị là “Tran Van A” response.write “Tác giả của trang home.asp là: ” &a %>
Tương tự như vậy nếu người dùng gửi giá trị Tran Van A thông qua một biến trong form và chọn method GET
HTML Code:
<form method=”get” action =”gioithieu.asp”>
<input type=”text” name=”tacgia” value=”Tran Van A”>
<input type=”submit” name=”submit” value=”Nhan vao day de sang trang gioi thieu”>
</form>
Request.Form
Cho phép server lấy về các giá trị được gửi từ người dùng qua form (method POST).
Chẳng hạn file form.asp:
HTML Code:
<form method=”POST” action =”xulyform.asp”>
<input type=”text” name=”User”>
<input type=”submit” name=”submit” value=”Nhan vao day de sang trang gioi thieu”>
</form>
File xulyform.asp làm nhiệm vụ xử lý thông tin từ Form này sẽ dùng câu lệnh request.form để nhận lại thông tin người dùng đã gõ vào:
Code:
<%Dim x
x=Request.form(“User”) %>
response.write “Tên người dùng là: ”&x%>
Hãy like nếu bài viết có ích →
Kết bạn với gisgpsrs trên Facebook
để nhận bài viết mới nóng hổi
Không có nhận xét nào:
Đăng nhận xét