Tuỳ theo từng con đường cụ thể, trên máy chủ ta cũng có các cách khác nhau để lấy dữ liệu được gửi lên... Cơ chế truyền nhận dữ liệu tt Trang nhận dữ liệu URL sử dụng các biến toàn cục
Trang 1PHƯƠNG THỨC POST, GET
COOKIE VÀ SESSION
TRONG PHP
Trang 2Giới thiệu
được gửi lên máy chủ dưới dạng từng
cặp biến=giá_trị và có thể đi theo 4 đường khác nhau Tuỳ theo từng con đường cụ thể, trên máy chủ ta cũng có các cách
khác nhau để lấy dữ liệu được gửi lên 4 con đường đó là: GET, POST và
COOKIES, Session Vậy GET, POST và COKIES, Session là gì?
Trang 3Cơ chế truyền nhận dữ liệu
Trang 4Cơ chế truyền nhận dữ liệu (tt)
Trang nhận dữ liệu (URL) sử dụng các biến toàn cục của PHP
$_POST [“NameOfControl”]
$_GET [“NameOfControl”]
$_ REQUEST [‘‘NameOfCotrol’’];
Trang 5Trang nhập dữ liệu (login.php)
<form name="form1" method=" get " action="main.php">
Trang 6Giao diện trang nhập dữ liệu
Trang 7Trang nhận dữ liệu (main.php)
<?php
echo "user name:".$_GET["USER"]."</br>"; echo "Pass word:".$_GET["PASS"]."</br>";
?>
Trang 8Trang nhận dữ liệu
Trang 9Truyền dữ liệu bằng phương thức Get
GET là phần dữ liệu được nhập trực tiếp theo sau địa chỉ URL do trình duyệt gửi lên, được phân biệt với tên file script bằng dấu hỏi chấm (?)
Ví dụ: khi ta gõ vào trình duyệt địa chỉ URL
sau:
http://www.phpvn.org/topic.php?TOPIC_ID=161
Khi đó, trình duyệt sẽ gửi theo địa chỉ trên một
cặp biến = giá trị, trong đó biến có tên là
TOPIC_ID và giá trị là 161 (TOPIC_ID=161)
Trang 10Truyền dữ liệu bằng phương thức Get
biết=giá_trị bằng cách phân cách chúng
bởi dấu &:
http://www.phpvn.org/index.php?meth
od=Reply&TOPIC_ID=161&FORUM_ID=20
Với địa chỉ URL trên, chúng ta sẽ gửi lên
3 cặp biến=giá_trị theo phương thức GET,
đó là: method=Reply, TOPIC_ID=161 và
FORUM_ID=20
Trang 11Truyền dữ liệu bằng phương thức Get
máy chủ, PHP sẽ tự động sinh ra một
mảng có tên là $_GET[] để nắm giữ tất cả các cặp biến và giá trị đó, trong đó, chỉ số của mảng chính là một chuỗi mang tên
của tên biến và giá trị của chỉ số đó chính
là giá trị của biến do trình duyệt gửi lên Ví
dụ, với địa chỉ URL sau:
http://www.phpvn.org/post.php?metho
d=Reply&TOPIC_ID=161&FORUM_ID=20
Trang 12Truyền dữ liệu bằng phương thức Get
có nội dung sau:
Trang 13Nhận dữ liệu bằng phương thức GET
$_GET [“NameOfControl”]
$_REQUEST [“NameOfControl”]
Trang 17Chạy ví dụ 2
http://localhost/welcome.php?user=hung
Kết quả?
Trang 18Phương thức POST
form HTML có method ="POST"
$_ REQUEST [‘‘NameOfCotrol’’];
Trang 19<input type="password" name="T2" size="20"></p>
<p>Sex: <Select name ="sex">
<option value =1>Male </option>
<option value =0>Female </option>
Trang 20Chạy Ví dụ 1
admin password là : 12345 và chọn sex
Trang 21Ví dụ 2 _ Giải phương trình bậc 1
<form method="POST">
<p style="margin-top: 0; margin-bottom: 0">
Nhập a:<input type="text" name="a" size="20"></p>
<p style="margin-top: 0; margin-bottom: 0">Nhập b:<input type="text" name="b" size="20"></p>
Nhập a:<input type="text" name="a" size="20"></p>
<p style="margin-top: 0; margin-bottom: 0">Nhập b:<input type="text" name="b" size="20"></p>
Trang 23Kết quả
Trang 27Ví dụ (tt)
<?
if(isset($_POST["radiobutton"]))
switch($_POST["radiobutton"]){
Trang 28Kết quả Ví dụ
Trang 29Khi nào dùng GET, POST
• Nhược điểm :
• Không thích hợp để truyền dữ liệu có tính bảo mật
• Dung lượng dữ liệu truyền đi có giới hạn (tối đa là
Trang 30Khi nào dùng GET, POST (tt)
• Ưu điểm :
• Bảo mật hơn phương thức GET
• Không giới hạn dữ liệu truyền đi
Trang 31Php và html
<?
function test() {
echo "test";
} echo "<form name=form1 method=post>";
echo "<input type=submit name=Submit value=OK>";
echo "<input type=submit name=reset value=Cancel>";
echo "</form>";
if(isset($HTTP_POST_VARS["Submit"])&&($HTTP_POST_VARS["Submi t"]=="OK"))
echo "Ban nhan OK";
if(isset($HTTP_POST_VARS["reset"])&&($HTTP_POST_VARS["reset"]=
="Cancel"))
echo "ban nhan can cel";
Trang 32Kết quả
Trang 33</FORM>
Trang 34<OPTION SELECTED value="http://www.java2s.com">java2s.com
Trang 35Kết quả
Trang 36Ví dụ _ thêm mục chọn vào combo
Trang 37Ví dụ (tt)
</head>
<body>
<FORM name="form1" method="POST">
<select id="mySel" name="1" size="1">
Trang 38Kết quả
Trang 39browser 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
cookie phụ thuộc vào website trên server
Trang 40browser, 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
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.
Trang 41Session
browser có yêu cầu lấy dữ liệu từ session thì server cung cấp.
đầu và kết thúc.
Trang 42So sách giữa cookie và session
lưu giữ data để truyền từ 1 trang web sang 1 trang web khác (trên cùng website)
Cookie và Session có phần khác nhau.
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.
quản lý
để lấy dữ liệu khi cần
Trang 43Sử 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
Trang 44• 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
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
Sử dụng Cookie hay Session?
Trang 46Ví dụ: tạo trang “a.php”
Trang 47echo "gia tri lay duoc ".$_COOKIE['a'];
} else
echo "khong lay duoc";
?>
Trang 48$_ SESSION [tên_session] = giá_trị;
$_ SESSION [tên_session]
Trang 49• Hủy tất cả các dữ liệu trong session
session_destroy ();
session_unset ();
session_unregister (tên biến)
SỬ DỤNG SESSION TRONG PHP
Trang 50Ví dụ tạo trang s_a.php
Trang 51Giá trị session lấy được <a href="a.php">file a.php</a>:<br>
username = <?php echo $_SESSION['username']; ?><br>
time = <?php echo $_SESSION['password']; ?>
</body>
</html>