1
PHƯƠNG THỨC POST, GET
COOKIE VÀ SESSION
TRONG PHP
2
Giới thiệu
Dữ liệu của người dùng từ trình duyệt sẽ
đượ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ì?
3
Cơ chế truyền nhận dữ liệu
Trang web nhập dữ liệu:
•
Sử dụng đối tượng <form>
•
Nhập dữ liệu thông qua các <control>
•
Thực hiện việc truyền dữ liệu thông qua Push
button Submit
<form name="form1" method="post/get"
action=“URL">
<input type="submit" name="Submit"
value="Submit">
</form>
4
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 của PHP
$_POST[“NameOfControl”]
$_GET[“NameOfControl”]
$_REQUEST[‘‘NameOfCotrol’’];
5
Trang nhập dữ liệu (login.php)
<form name="form1" method="get" action="main.php">
<p>
<label>User name
<input name="USER" type="text" id="USER">
</label>
</p>
<p>
<label>Pass word
<input name="PASS" type="text" id="PASS">
</label>
</p>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
6
Giao diện trang nhập dữ liệu
7
Trang nhận dữ liệu (main.php)
<?php
echo "user name:".$_GET["USER"]."</br>";
echo "Pass word:".$_GET["PASS"]."</br>";
?>
8
Trang nhận dữ liệu
9
Truyền dữ liệu bằng phương thức Get
Dữ liệu gửi từ trình duyệt lên qua phương thức
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:
/>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).
10
Truyền dữ liệu bằng phương thức Get
Chúng ta cũng có thể đưa lên nhiều cặp
biết=giá_trị bằng cách phân cách chúng
bởi dấu &:
/>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.
11
Truyền dữ liệu bằng phương thức Get
Khi trình duyệt gửi các thông tin này lên
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:
/>d=Reply&TOPIC_ID=161&FORUM_ID=20
12
Truyền dữ liệu bằng phương thức Get
PHP sẽ tự động sinh ra một mảng $_GET
có nội dung sau:
•
$_GET["method"] = "Reply" // tương
ứng với cặp method=Reply
•
$_GET["TOPIC_ID"] = 161 // tương ứng
với cặp TOPIC_ID=161
•
$_GET["FORUM_ID"] = 20 // tương
ứng với cặp FORUM_ID=20
13
Nhận dữ liệu bằng phương thức GET
Nhận dữ liệu thông qua biến toàn cục của php
$_GET[“NameOfControl”]
$_REQUEST[“NameOfControl”]
14
Ví dụ 1
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<a href=‘chitietsach.php?Ma=N001’> Chi tiết </a>
</body>
</html>
Trang “get.php”
15
Ví dụ 1(tt)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
echo "Ma sách lấy được là".$_GET["Ma"];
?>
</body>
</html>
Trang lấy dữ liệu (chitietsach.php)
16
Ví dụ 2
<?// Hàm isset được sử dụng để kiểm tra xem một biến đã được thiết lập hay
chưa
if (isset ($_GET["user"]))
{
if ($_GET["user"]==“hung")
{
echo "Hello, my boss. Good morning!";
}
else
{
echo "Hello, " . $_GET["user"] . ". Good morning!";
}
}
else
{
echo "Hello, guest. How do you do?";
}?>
17
Chạy ví dụ 2
Ta lưu ví dụ trên với tên file welcome.php
Sau đó ta bật trình duyệt và gõ vào địa chỉ
http://localhost/welcome.php?user=hung
Kết quả?
18
Phương thức POST
Post là phần dữ liệu được gửi qua các
form HTML có method ="POST"
Lấy dữ liệu:
$_POST[‘‘NameOfControl’’] ;
$_REQUEST[‘‘NameOfCotrol’’];
19
Ví dụ 1
<form method="POST " action="">
<p>
User Name:<input type="text" name="T1" size="20"> </p>
<p>
Password:
<input type="password" name="T2" size="20"></p>
<p>Sex: <Select name ="sex">
<option value =1>Male </option>
<option value =0>Female </option>
</select>
</p>
<input type="submit" value="Submit" name="B1" >
</form>
<?
if(isset($_POST["B1"])&& ($_POST["B1"]=="Submit"))
echo"<script language='javascript'>window.open('')</script>";
//header('Location: ;
else
echo "không";
?>
20
Chạy Ví dụ 1
Khi người dùng nhập user name là :
admin. password là : 12345 và chọn sex
là Male, khi đó, mảng
•
$_POST sẽ có các phần tử sau:
•
$_POST["T1"] = admin
•
$_POST["T2"] = 12345
$_POST["sex"] = 1
21
Ví 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>
<p style="margin-top: 0; margin-bottom: 0">
<input type="submit" value="Tính" name="B1"></p>
</form>
<?php
if(isset($_POST[‘B1’])&&($_POST[‘B1’]==‘Tinh’))
{ $a=0;
$b=0;
if (isset ($_POST["a"]))
{
$a =$_POST["a"];
}
if (isset ($_POST["b"]))
{
$b =$_POST["b"];
}
<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>
<p style="margin-top: 0; margin-bottom: 0">
<input type="submit" value="Tính" name="B1"></p>
</form>
<?php
if(isset($_POST[‘B1’])&&($_POST[‘B1’]==‘Tinh’))
{ $a=0;
$b=0;
if (isset ($_POST["a"]))
{
$a =$_POST["a"];
}
if (isset ($_POST["b"]))
{
$b =$_POST["b"];
}
22
Ví dụ 2 _ Giải phương trình bậc 1
if ($a<>0)
{
echo "<BR>Nghiem la: " . -$b/$a;//Chỗ này là -$b/$a
}
else
{
if ($b==0)
{
echo "<BR>Vo so nghiem";
}
else
{
echo "<BR>Vo nghiem";
}
}
?>
23
Kết quả
24
Ví dụ
<form name="form1" method="post" action="">
<label> </label>
<table width="357" border="1">
<tr>
<td width="178"><p>
<label>
<input type="text" name="t1">
</label>
</p>
<p>
<label>
<input type="text" name="t2">
</label>
</p>
<p>
<input type="submit" name="Submit" value=" = ">
</p>
25
Ví dụ (tt)
<p>
<label>
<input type="text" name="t3">
</label>
</p></td>
<td width="163"><label>
<input name="radiobutton" type="radio" value="r1" checked>
+<br>
<input name="radiobutton" type="radio" value="r2">
-</label>
<p>
<label>
<input name="radiobutton" type="radio" value="r3">
*</label>
</p>