Giáo trình Lập trình PHP cơ bản - Chương 5: Lập trình ứng dụng WEB với PHP

Mục tiêu  
Sau khi hoàn thành chương này, chúng ta sẽ có thể:  
▪ Phân tích được sự khác nhau cơ bản của hai phương thức POST và  
GET cũng như vận dụng chúng để lấy dữ liệu từ Form.  
▪ Biết cách khai báo và tạo cookie.  
▪ Trình bày được tầm quan trọng của cookie trong các ứng dụng thực tế.  
▪ Trình bày được các bước cơ bản để kết nối csdl MySQL và hiển thị dữ  
liệu trên trang web.  
▪ Vận dụng được các thao tác thêm, xóa, sửa dữ liệu.  
Câu hỏi kiểm tra mở đầu  
Trả lời các câu hỏi sau:  
1. MySQL là?  
a. Cơ sở dữ liệu  
b. Hệ cơ sở dữ liệu  
c. Hệ quản trị cơ sở dữ liệu  
2. Trong ASP.NET để lấy dữ liệu từ Form dùng phương thức GET chúng  
ta dùng lệnh?  
a. Request.QueryString.Get  
b. Request.Form.Get  
c. Request.Get  
d. Request.GetValue  
3. Theo bạn giải pháp nào là tốt nhất để phân quyền người dùng trong các  
ứng dụng web?  
a. Dùng lệnh rẽ nhánh để phân quyền  
b. Lưu dấu người dùng và chỉ định bằng lệnh rẽ nhánh  
c. Lưu dấu người dùng và chỉ định bằng URL  
   
4. Nếu quá trình hiển thị dữ liệu của chúng ta là rất lớn (500 bản ghi),  
chúng ta sẽ nghĩ đến giải pháp gì?  
a. Hạn chế dữ liệu hiển thị  
b. Phân trang  
c. Truy vấn có điều kiện để hạn chế dữ liệu hiển thị  
d. Không vấn đề gì cả.  
5. Theo bạn, các trang web HTML có kết nối được tới cơ sở dữ liệu nào  
không?  
a. Có  
b. Không  
1.Trao đổi thông tin với trình duyệt  
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 3 con đườ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.. 3 con đường đó là: GET, POSTvà COOKIES.  
Trong phần này, chúng ta sẽ tìm hiểu về GETvà POST. Chúng ta sẽ tìm hiểu  
về Cookietrong phần sau:  
1.1 Truyền dữ liệu thông qua 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ỉ URLdo 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).  
Chúng ta cũng có thể đưa lên nhiều cặp biến=giá_trị bằng cách phân  
cách chúng bởi dấu &:  
Địa chỉ URLtrê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=161và FORUM_ID=20.  
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ỉ URLsau:  
 
Thì PHP sẽ tự động sinh ra một mảng $_GETcó 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  
Ví dụ, chúng ta tạo ra hai file: wellcome.html và  
wellcome.php.  
// wellcome.html  
<form action="welcome.php" method="get">  
Name: <input type="text" name="fname" />  
Age: <input type="text" name="age" />  
<input type="submit" />  
</form>  
Khi người dùng nhấp vào nút submit, URL gửi tới server có thể  
trông giống như thế này:  
File “wellcome.php”bây giờ có thể sử dụng hàm $_GETđể thu  
thập dữ liệu (Các tên của các trường trong Formsẽ tự động là các khóa trong  
mảng $_GET):  
Welcome <?php echo $_GET["fname"]; ?>.<br />  
You are <?php echo $_GET["age"]; ?> years old!  
Khi chạy trên trình duyệt, nó sẽ hiển thị:  
Welcome Peter!  
You are 37 years old.  
Chú ý: Phương thức này không nên sử dụng khi gửi password hoặc các  
thông tin nhạy cảm khác. Tuy nhiên, bởi vì các biến được hiển thị trên URL,  
nó có thể đánh dấu trang. Điều này có thể là hữu ích trong một số trường hợp.  
Một lưu ý nữa là phương thức GETkhông thích hợp cho các giá trị biến lớn  
(giá trị không thể vượt quá 100 ký tự)  
1.2 Phương thức POST  
Post là phần dữ liệu được gửi qua các form HTML có method  
="POST"(xin xem lại bài về HTML).  
Để lấy các biến theo kiểu POST, PHPsẽ tự động sinh ra mảng có tên  
là $_POST[].Mảng này có chỉ số chính là tên của các phần tử trong form  
(các thẻ input, select... có thuộc tính name) và giá trị là nội dung  
giá trị do người sử dụng nhập vào các phần tử có tên tương ứng. Chẳng hạn  
với mẫu biểu HTML sau:  
<form method="POST">  
<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="Gui di" name="B1">  
</form>  
Khi người dùng nhập user name (giả sử là hieulv68),  
password (giả sử là 123456) và chọn sex là Male, khi đó, mảng  
$_POSTsẽ có các phần tử sau:  
$_POST["T1"] = hieulv68  
$_POST["T2"] = 123456  
$_POST["sex"] = 1  
Đây là ví dụ một chương trình giải phương trình bậc nhất  
<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>  
<?  
$a=0;$b=0;  
if (isset ($_POST["a"]))  
{
$a =$_POST["a"];  
}
if (isset ($_POST["b"]))  
{
$b =$_POST["b"];  
}
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";  
}
}
?>  
2.Làm việc với Cookies  
Khi các trang web tĩnh được phát triển trong các ứng dụng web động,  
điều cần thiết cho các ứng dụng này là duy trì trạng thái, đó là khả năng giữ  
lại các giá trị của biến và giữ lại các các thông tin của người dùng (Người  
hiện giờ đã đăng nhập vào hệ thống). Với các công nghệ trước kia chẳng hạn  
như CGI khi một client đưa ra một yêu cầu, server chỉ tạo ra một phản hồi và  
gửi trả nó về. Khi yêu cầu khác được nhận từ người dùng đó, server không có  
kế hoạch hành động nếu có một yêu cầu trước đó. Điều này bởi vì giao thức  
HTTP là chưa được công nhận.  
2.1 Cookie là gì?  
Cookie đã được phát triển để giải quyết vấn đề duy trì trạng thái giữa  
những người ghé thăm sau này đến một trang web hoặc giữa các lần truy cập  
vào các trang khác nhau trong một trang web. Cookie cho phép các máy chủ  
lưu trữ và truy xuất dữ liệu trên ổ cứng của client. Điều này tạo ra một tên  
miền mới của các ứng dụng mà có thể theo dõi đường dẫn của một client  
thông qua một trang web: ví dụ, các ứng dụng thương mại điện tử có thể lưu  
trữ bản ghi được lựa chọn bởi một khách hàng, một trang web thành viên có  
thể nhớ một ID cho mỗi người dùng và một web server có thể tạo các hồ sơ  
khách truy cập. Trong tất cả các trường hợp này, các cookie có thể được dùng  
để lưu trữ dữ liệu trên client.  
Có những hạn chế cụ thể để tránh sự lạm dụng cookie. Đầu tiên, một  
trình duyệt được giới hạn đến 300 cookie và 20 cookie cho mỗi server. Nếu  
một ứng dụng cần để duy trì nhiều dữ liệu hơn, nó cần giữ dữ liệu ở phía  
server (điều này có thể được thực hiện với sự hỗ trợ của PHP 4.0, hoặc lưu  
trữ trong cơ sở dữ liệu). Thứ hai, cookie chỉ được gửi đến các server được  
phép nhận chúng. Khi một server thiết lập một cookie, nó có thể hạn chế  
 
phạm vi của các máy chủ cookie được gửi tới. Bởi vì cookie có thể chứa dữ  
liệu nhạy cảm, bị rò rỉ dữ liệu này có thể dẫn đến một lỗ thủng bảo mật.  
2.2 Các hạn chế của Cookie.  
Phạm vi của cookie được xác định trong việc gửi phản hồi HTTP bởi web  
server. Phản hồi này bao gồm thông tin sau:  
▪ Thông tin hết hạn (ví dụ: 01/01/2000, 03:00:00)  
▪ Thông tin đường dẫn (ví dụ: /cgi-bin/php)  
▪ Thông tin tên miền (ví dụ: codienhanoi.edu.vn)  
▪ Một tham số an toàn  
Thông tin hết hạn được sử dụng để kiểm tra cookie vẫn còn hợp lệ  
đúng hay không. Một khi cookie đã hết hạn, client sẽ không gửi nó tới web  
server nữa. điều này được xác định trong GMT. Nếu ngày hết hạn không  
được xác định, client sẽ giải phóng cookie khi trình duyệt bị đóng. Thông tin  
đường dẫn xác định đường dẫn trên web server để cookie trong đó hợp lệ.  
Nếu thông tin đường dẫn của cookie và URL được yêu cầu không thỏa, client  
sẽ không gửi cookie.  
Thông tin tên miền xác định tên miền cookie có giá trị. Chúng ta có thể  
hạn chế các web server đến một máy chủ cụ thể (ví dụ: " .edu.vn"), hoặc  
một tên miền hoàn toàn (ví dụ: "codienhanoi.edu.vn".;Lưu ý dấu  
chấm đầu tiên (.)). Điều này cho phép các cookie được chia sẻ giữa nhiều  
máy chủ. Ví dụ, một trang web lớn có thể sử dụng hostnames  
www1.site.com, www2.site.com, vvNếu thông tin tên miền được  
thiết lập để " .site.com", Cookie sẽ được truy cập từ tất cả các host  
này.  
Nếu các thông số an toàn được kích hoạt, cookie sẽ chỉ được gửi trên  
các kênh an toàn (tức là qua giao thức HTTPS). Một kênh an toàn không thể  
được đọc bởi các bên thứ ba, do đó, dữ liệu không thể bị đánh cắp. Nếu tham  
số này không được thiết lập, cookie sẽ được gửi qua tất cả các kênh, bao gồm  
các kênh an toàn.  
Mặc định cho các tham số này là:  
Tên tham số  
Giá trị mặc định  
“/” (Tất cả các đường dẫn trên  
server)  
Path  
Tên miền của server để thiết lập  
cookie  
Domain  
Expire information  
Secure  
Cho đến khi đóng trình duyệt  
Vô hiệu hóa (disable)  
2.3 Cookie trong PHP  
Cookie được hỗ trợ trong PHP, vì vậy người lập trình PHP có thể lấy  
được đầy đủ các tính năng của công nghệ này. Đọc cookie trong PHP đơn  
giản như truy cập biến. Trong lúc bắt đầu kịch bản của chúng ta, cookie tự  
động tạo ra biến đó là biến toàn cục.Ví dụ, nếu chúng ta thiết lập một cookie  
có tên username với nội dung hieulv68, thì biến $username sẽ bao  
gồm “hieulv68”.  
Chú ý rằng cookie và biến dẫn xuất chỉ sẵn sàng khi client chấp nhận  
cookie và gửi nó lại cho server.  
2.4 Khai báo và tạo cookie  
Chúng ta hãy bắt đầu với một ví dụ đơn giản nơi mà chúng ta muốn  
đếm khách ghé thăm đã xem site của chúng ta như thế nào. Để làm điều này,  
chúng ta sử dụng một cookie có tên “count”để chứa số người ghé thăm.  
PHP sẽ tự động làm có hiệu lực biến $countvào kịch bản của chúng ta nếu  
cookie được gửi bới hành động người dùng (Trình duyệt). Chúng ta sử dụng  
hàm setcookie()để gửi yêu cầu tới trình duyệt để thiết lập một cookie.  
Yêu cầu này cập nhật hoặc tạo một cookie trên client. Mã lệnh này phải xuất  
hiện tại lúc bắt đầu của trang, bất kỳ nội dung nào (kể cả khoảng trống) xuất  
hiện trước lúc mở thẻ PHP sẽ phát sinh lỗi.  
<?php  
$count++;  
setcookie("count", $count);  
?>  
Welcome! You have seen this site  
<? echo($count . ($count == 1 ? " time!" : " times!"));  
?>  
Kịch bản tăng biến $countvà gửi giá trị đã tăng tới tác nhân người  
dùng sử dụng setcookie. Nếu tác nhân người dùng không gửi cookie cho  
chúng ta, PHP sẽ khởi tạo biến thành 0 khi chúng ta bắt đầu sử dụng nó.  
Tham số đầu tiên setcookie()là tên của cookie và tham số thứ hai là giá  
trị chúng ta muốn thiết lập cho nó. Phần cuối của mã lệnh trên đơn giản là  
chúng ta hiển thị ra một thông báo.  
Một lỗi thường xảy ra là setcookieđược gọi sau khi nội dung đã  
được gửi tới tác nhân người dùng. Điều này xảy ra khi chúng ta hiển thị dữ  
liệu bất kỳ trước khi setcookie được gọi. Một ký tự khoảng trống đơn (một  
dòng mới) có thể đủ để tạo cho setcookie()lỗi.  
Đây là một số văn bản. Tiếp theo setcookie()sẽ lỗi bởi vì chúng  
ta đã gửi thông tin đến trình duyệt.  
<?php  
$count++;  
setcookie("count", $count);  
?>  
Welcome! You have seen this site  
<? echo($count . ($count == 1 ? " time!" : " times!"));  
?>  
PHP sẽ tự động tạo ra một thông điệp cảnh báo nếu setcookie được gọi  
sau khi hồi âm HTTP chắc chắn đã được gửi.  
Bây giờ chúng ta sẽ mở rộng ví dụ đầu tiên của chúng ta. Cookie được  
thiết lập mặc định chỉ cho phiên làm việc hiện tại của tác nhân người dùng và  
hết hạn một khi người dùng đóng trình duyệt. Nếu chúng ta không muốn điều  
đó xảy ra, chúng ta cần phải thiết lập một thời gian và ngày hết thời hạn rõ  
ràng trong lời gọi setcookie ().Thời gian hết hạn được quy định như  
một dấu thời gian (số giây kể từ kỷ nguyên (01 Tháng một 1970)). Dấu thời  
gian này có thể được tính toán trong PHP bằng cách sử dụng time() và hàm  
mktime(). Hàm time() trả về mốc thời gian cho thời gian hiện tại và  
hàm mktime()chuyển đổi một ngày “thân thiện với con người” thành một  
mốc thời gian. Các tham số cho hàm này là giờ, phút, giây, tháng, ngày và  
năm cho ngày để được chuyển đổi (trong thứ tự đó).  
<?php  
// Hết hạn trong 3600 giây (1 giờ)  
setcookie("name", $value, time() + 3600);  
// Hết hạn vào 01/01/2002  
setcookie("name", $value, mktime(0,0,0,1,1,2002));  
// Hết hạn lúc 6:30 PM ngày 05/12/2020  
setcookie("name", $value, mktime(18, 30, 0, 5, 12,  
2020));  
?>  
2.5 Bạn tên gì?  
Chúng ta hãy xem một ví dụ khác. Trang này thông báo người dùng  
nhập tên của họ, tên của họ sau đó được submit tới server. Server sẽ gửi một  
yêu cầu “setcookie”tới client và trên vùng người dùng ghé thăm sẽ được  
chào đón bởi tên.  
<?php  
if($action == "setcookie") {  
setcookie("visitorname",$visitorname,time()+90*86400);  
// Hết hạn trong 90 ngày  
}
if(isset($visitorname)):  
?>  
Welcome <B><? echo $visitorname ?></B>!  
<? else: ?>  
<FORM>  
<INPUT TYPE="HIDDEN" NAME="action" VALUE="setcookie">  
Welcome, please tell us your name:  
<INPUT TYPE="TEXT" NAME="visitorname"><BR>  
<INPUT TYPE="SUBMIT" VALUE="  
</FORM>  
<? endif; ?>  
OK  
">  
Khi người dùng để lại dấu vết đến trang này, mã lệnh kiểm tra xem  
biến $visitornamethiết lập đúng hay sai. Nếu nó đúng, một thông điệp  
lời chào sẽ được hiển thị. Mặt khác chúng ta sẽ hiển thị một form nhỏ mời  
người dùng nhập tên của họ.  
Khi người dùng nhập tên, trang sẽ nhận yêu cầu và kiểm tra biến  
$action từ phần tử <ELEMENT> ẩn thiết lập tới “setcookie” đúng hay  
sai. Nếu nó đúng, kịch bản cố gắng thiết lập một cookie trên client sử dụng  
setcookie(). Chúng ta xác định vòng đời của cookie là 90 ngày (một  
ngày có 86400 giây) với hiệu lực rằng cookie sẽ hết hạn trong 3 tháng sau,  
nếu nó được chấp nhận bởi client.  
2.6 Truy cập một cookie  
Nếu yêu cầu HTTP được gửi bởi tác nhân người dùng bao gồm thông  
tin cookie, PHP sẽ tự động truyền dữ liệu này vào trong biến để kịch bản của  
chúng ta có thể truy cập vào biến đó. Ví dụ, nếu tác nhân người dùng gửi một  
cookie có tên “username”, kịch bản có thể truy cập giá trị của cookie  
bằng cách sử dụng một trong hai phương thức sau:  
▪ $username – biến được lưu trữ trong biến toàn cục với tên giống  
như cookie.  
▪ $_COOKIE[“username”] –Mảng kết hợp toàn cục bao gồm duy  
nhất các biến từ các cookie. Điều này giúp cho thấy được sự khác biệt  
giữa các biến mà nó tạo ra từ các nguồn dữ liệu khác nhau (Xem thêm  
$_GET và $_POST). Nếu chúng ta truy cập mảng này, thông tin về  
nguồn gốc là có thể tin cậy.  
2.7 Thiết lập một cookie  
Cách cơ bản nhất để thiết lập một cookie là sử dụng hàm  
setcookie(). Chúng ta đã thấy form đơn giản nhất của hàm này – một  
cách đơn giản là chúng ta gọi setcookie()với tên cookie và giá trị để nó  
thiết lập. Ví dụ, để lưu trữ giá trị “value”trong cookie “cookiename”,  
chúng ta sẽ sử dụng trong kịch bản của chúng ta:  
setcookie("cookiename", "value");  
2.8 Các cookie nhiều giá trị  
Tuy nhiên, giả sử chúng ta muốn lưu trữ cả tên của khách ghé thăm và  
số lần người dùng dã ghé thăm trang của chúng ta. Chúng ta có thể sử dụng  
hai cookie tách rời nhau, nhưng khi có sự hạn chế 20 cookie trên mỗi server,  
chúng ta có thể không muốn làm điều này. May thay, chúng ta có thể lưu trữ  
nhiều giá trị trong một cookie đơn. Để làm điều này, chúng ta coi cookie là  
một mảng và gán giá trị tới mỗi phần tử trong mảng đó:  
<?php  
if (!isset($mycookie[0])) {  
setcookie("mycookie[0]", $visitorname);  
}
$mycookie[1]++;  
setcookie("mycookie[1]", $mycookie[1]);  
echo("Hello $mycookie[0], you've seen this page " .  
$mycookie[1] . ($mycookie[1] == 1 ? " time!" : "  
times!"));  
?>  
2.9 Thiết lập ngày hết hạn  
Khichúng ta gửi một yêu cầu “set cookie”tới client (không thiết  
lập ngày hết hạn). Nếu client chấp nhận cookie, nó sẽ cố gắng duy trì cho đến  
khi trình duyệt bị đóng. Để kéo dài vòng đời của cookie, chúng ta có thể gửi  
một thời gian hết hạn với yêu cầu “set cookie”. Thời gian này phải  
được xác định trong một mốc thời gian. Chúng ta có thể tính toán mốc thời  
gian này bằng cách sử dụng hai hàm. Hàm đầu tiên là mktime(),nó có thể  
được sử dụng để tính toán ngày thuần túy. Hàm thứ hai là time(),nó trả  
về thời gian hiện tại theo giây. Bằng việc thao tác số chúng ta có thể xác định  
vòng đời của một cookie có liên quan tới thời gian hiện tại. Hãy nhớ rằng  
thời gian hết hạn là thời gian trên máy của client, không phải trên server – do  
vậy nó có thể là vùng thời gian khác nhau.  
// Các ngày thuần túy  
// Tham số: giờ:phút:giây:tháng:ngày:năm  
$lifetime = mktime(0, 0, 0, 12, 1, 1999);  
// giữa đêm 01.12.1999  
$lifetime= mktime(12, 50, 30, 6, 20, 2010);  
//12:50:30 20.06.2010  
// Các ngày tương đối  
$lifetime = time() + 3600;  
$lifetime = time() + 86400;  
// Vòng đời 1 giờ  
// Vòng đời 1 ngày  
$lifetime=time()+86400*30;//Vòng đời một tháng(30 ngày)  
Sau khi chúng ta đã tính toán vòng đời sống, chúng ta có thể truyền nó  
đến setcookie()là tham số thứ 3:  
setcookie("cookiename", "value", $lifetime);  
Trình duyệt sẽ duy trì cookie chạy phía sau và sẽ tự động hủy cookie  
tại thời điểm xác định.  
2.10 Giới hạn phạm vi của cookie  
Tùy chọn hữu ích khác là chỉ định các trang trên web server của chúng  
ta để cookie sẽ được gửi tới nó. Hãy tưởng tượng rằng một web server nơi mà  
một số người dùng đã lưu trữ các trang của họ trong /customer1,  
/customer2 .v.v. Nếu trình duyệt luôn gửi cookie tới web server,  
cookie thiết lập bằng cách một kịch bản đang thuộc về người dùng đầu tiên  
cũng sẽ thấy được tất cả các trang của người dùng khác trên cùng server. Phụ  
thuộc vào nội dung của các cookie, điều này có thể có khả năng ra tạo một  
vấn đề bảo mật.  
Do vậy, các tác nhân người dùng có thể hạn chế vòng đời của một  
cookie. Giới hạn đầu tiên xác định tập hợp con của URL trong một tên miền  
để cookie có hiệu lực. Chú ý rằng tất cả các đường dẫn bắt đầu với chuỗi xác  
định sẽ được thỏa, ví dụ: “/cust”thỏa cả “/customer1/test.php”  
và “/cust.php”. Do vậy, nếu chúng ta muốn chỉ định một đường dẫn,  
chúng ta sẽ nối thêm một vạch xiên (/). Đường dẫn mức đỉnh là “/”;  
chúng ta có thể chỉ định điều này nếu chúng ta muốn cookie có hiệu lực cho  
toàn web server. Giá trị mặc định cho tham số này là đường dẫn của tài liệu  
mà nó gọi setcookie().Đối với các ví dụ phía trên của chúng ta, chúng  
ta sẽ chỉ định theo sau việc giới hạn cookie bằng đường dẫn /customer1:  
setcookie("cookiename","value",$lifetime,"/customer1/";  
Giới hạn thứ hai điều khiển các tên miền để cookie hợp lệ. Cookie chỉ  
gửi tới web server nếu tên miền của host từ URL được thỏa thuộc tính miền.  
Cookie là hợp lệ nếu có đuôi được thỏa. Ví dụ: “.server.com”sẽ thỏa  
nhưng “webserver.com”thì không thỏa.  
setcookie("cookiename","value",$lifetime,"/customer1/",  
".server.com");  
Điều này sẽ cho biết tác nhân người dùng gửi cookie tới tất cả server,  
các hostname của server này trong tên miền server.com.  
Bây giờ, giả sử rằng cookie của chúng ta bao gồm các thông tin nhạy  
cảm mà chúng ta muốn bảo vệ từ các con mắt khác. Sử dụng một HTTP  
(HTTPS) kết nối tới web server mã hóa dữ liệu và do vậy làm cho nó khó  
khăn hơn để xem trộm. Để bỏ qua sự rủi ro của việc gửi cookie trên một kết  
nối văn bản rõ ràng (không mã hóa), tham số thứ 6 có thể được truyền. Nếu  
tham số này được thiết lập là 1, tác nhân người dùng sẽ không gửi cookie trừ  
khi kết nối là được bảo vệ.  
Cú pháp đầy đủ cho hàm setcookie()như sau:  
int setcookie(string cookiename, string [value], integer  
[lifetime], string [path], string [domain], integer  
[secure]);  
Tổng kết các tham số trên:  
▪ Cookiename – tên cookie, giá trị sau đó có thể truy cập là  
$cookiename  
▪ Value– Đây là giá trị để lưu trữ trong $cookiename. Nó tự động  
mã hóa và giải mã bởi PHP.  
▪ Lifetime– thời gian khi cookie sẽ hết hạn, có thể được tính toán bởi  
mktime()và time().  
▪ Path– Tâph hợp con của đường dẫn để cookie hợp lệ. Một dấu gạch  
chéo nên được thêm vào nếu chúng ta muốn chỉ định một đường dẫn.  
▪ Domain – quyết định loại server cookie sẽ gửi. Tên miền của host  
phải thỏa với miền được chỉ định nếu cookie được gửi.  
▪ Secure – được sử dụng để ngăn chặn cookie gửi trên một kết nối  
không an toàn (HTTP chuẩn).  
Tất cả các tham số này là tùy chọn, ngoại trừ cookiename. Giá trị mặc  
định cho mỗi tham số tùy chọn là chuỗi rỗng (value, path, domain)  
hoặc 0 (lifetime, secure). Ví dụ, nếu chúng ta muốn chỉ định miền  
nhưng không vòng đời sống hoặc đường dẫn, chúng ta sẽ sử dụng:  
setcookie("cookiename", "value", 0, "", ".server.com");  
2.11 Xóa một cookie  
Một cookie có thể được xóa bằng cách sử hùng hàm setcookie()  
với duy nhất một tham số.  
setcookie("cookiename")  
Điều này sẽ gây cho cookie “cookiename”bị xóa trên client. Điều  
này không ảnh hưởng đến thiết lập các biến cookie hiện thời. Nó cũng không  
thay đổi $_COOKIE.  
3.Thao tác với cơ sở dữ liệu MySQL  
MySQL là cơ sở dữ liệu được sử dụng cho các ứng dụng Web có  
quy mô vừa và nhỏ. Tuy không phải là một cơ sở dữ liệu lớn nhưng  
chúng cũng có trình giao diện trên Windows hay Linux, cho phép người  
dùng có thể thao tác các hành động liên quan đến cơ sở dữ liệu.  
Cũng giống như các cơ sở dữ liệu, khi làm việc với cơ sở dữ liệu  
MySQL, chúng ta đăng ký kết nối, tạo cơ sở dữ liệu, quản lý người dùng,  
phần quyền sử dụng, thiết kế đối tượng Table của cơ sở dữ liệu và xử lý  
dữ liệu.  
Tuy nhiên, trong bất kỳ ứng dụng cơ sở dữ liệu nào cũng vậy, nếu  
bản thân chúng có hỗ trợ một trình giao diện đồ hoạ, chúng ta có thể sử  
dụng chúng tiện lợi hơn các sử dụng Command line. Bởi vì, cho dù chúng  
ta điều khiển MySQL dưới bất kỳ hình thức nào, mục đích cũng quản lý  
và thao tác cơ sở dữ liệu.  
3.1 SQL là gì?  
SQL có thể được định nghĩa là ngôn ngữ chuẩn được sử dụng để  
tương tác với cơ sở dữ liệu quan hệ. Tuy nhiên, SQL không phải là ngôn  
ngữ máy tính giống như C, C++ hoặc PHP. Thực tế, nó là công cụ tương  
tác để thực hiện các nhiệm vụ quản lý cơ sở dữ liệu khác nhau, thường là  
một tập các câu lệnh được định nghĩa tới người dùng. Chính xác hơn nó  
là một ngôn ngữ truy vấn, SQL cung cấp một dãy các công cụ để tương  
tác với cơ sở dữ liệu, bao gồm những phần sau đây:  
▪ Ngôn ngữ định nghĩa dữ liệu (Data Structure definition): SQL có  
thể định nghĩa các cấu trúc khác nhau mà cơ sở dữ liệu sử dụng để  
lưu trữ dữ liệu.  
 
▪ Truy vấn dữ liệu (Data querying): SQL có thể phục hồi dữ liệu  
trong cơ sở dự liệu và đưa ra một định dạng có thể đọc được một  
cách đơn giản.  
▪ Thao tác dữ liệu (Data manipulaion): SQl có thể chèn, cập nhật và  
xóa dữ liệu cơ sở dữ liệu.  
▪ ...  
3.2 Định nghĩa dữ liệu  
Các kiểu miền trong SQL  
▪ CHAR(n): Xâu kí tự có độ dài cố định n.  
▪ VARCHAR(n): Xâu kí tự có độ dài tối đa n.  
▪ INT, SMALLINT: Kiểu số nguyên.  
▪ NUMBER(p,d): Số thập phân gồm p chữ số và một dấu chấm  
và d chữ số bên phải dấu chấm.  
▪ REAL, DOUBLE, PRECISION: Số dấu phẩy động.  
▪ FLOAT(n): Số dấu phẩy động với độ chính xác ít nhất n chữ số.  
▪ DATE: Kiểu ngày, tháng, năm.  
▪ TIME: Kiểu giờ trong ngày.  
Định nghĩa lược đồ trong SQL  
Dạng đơn giản nhất của câu lệnh tạo một bảng có cú pháp như sau:  
CREATE TABLE <Tên bảng>(  
<Tên cột 1><Kiểu dữ liệu 1>(<Kích thước 1>),  
<Tên cột 2><Kiểu dữ liệu 2>(<Kích thước 2>),  
..................  
<Tên cột n><Kiểu dữ liệu n>(<Kích thước n>)  
);  
Tải về để xem bản đầy đủ
doc 51 trang Thùy Anh 18900 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình PHP cơ bản - Chương 5: Lập trình ứng dụng WEB với PHP", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docgiao_trinh_lap_trinh_php_co_ban_chuong_5_lap_trinh_ung_dung.doc