Khái niệm

Một phần của tài liệu tự học php lập trình web - nguyễn văn đại (Trang 124 - 136)

IX. Một số thẻ đặc biệt

1. Khái niệm

Chương 7: Tạo web động

I. Sử dụng tập tin dùng chung

Để sử dụng các đoạn mã bên ngoài, chúng ta có thể sử dụng khai báo tiền xử lý include và require. Cho phép chúng ta xây dựng các hàm các hằng số, và bất kỳ đoạn mã nào sau đó có thể chèn vào các đoạn kịch bản.

Require khác include là, nó có thể làm thay đổi nội dung của trang hiện tại khi biên dịch, các trang này dùng để khai báo các biến, các hằng số hay các đoạn mã đơn giản không có vòng lặp. Khi đó include cho phép thực hiện các câu lệnh phức tạp – có câu lệnh tạo chu trình. Nó chỉ sử dụng các hàm như những hàm ngoài của chương trình.

Ví dụ: Header Menu_main Memu_left Content Hot information Fooder 1. REQUIRE a. Cách sử dụng

Đối với phương thức require(), tất cả nội dung bên trong file được chèn vào sẽ được biên dịch.

Khi chúng ta muốn sử dụng đoạn chương trình đã được viết sẵn ở vị trí nào trong trang thì chúng ta chỉ cần dùng require() để chèn file chứa đoạn chương trình này ở vị trí đó.

Cú pháp:

require("tên và đường dẫn của tập tin");

Ví dụ:

Đoạn chương trình dưới đây được viết ở trang chao.php

echo "Hello my class";

?>

Còn đoạn chương trình dưới được viết ở trong home.php

<?php

echo "Đây là đoạn chương trình hướng dẫn học PHP và MYSQL<br>"; require("chao.php");

echo "<br>Đã đến với chương trình này";

?>

b. Các tập tin đương dùng trong require()

PHP không quy định cách đặt tên tập tin được chèn vào bằng require(). Vì vậy, chúng ta có thể đặt tên tập tin tùy ý. Khi chúng ta dùng require() để chèn tập tin này vào, nội dung của tập tin sẽ trở thành một phần trong trang web.

Thông thường, các câu lệnh PHP đơpch viết trong các tập tin .html sẽ không thực hiện được. Chúng sẽ thực hiện được khi chúng được viết dưới trong các tập tin .php. Vì vậy, khi viết các câu lệnh PHP trong các tập tin được dùng để chèn này, ta nên chọn kiểu tập tin thích hợp như . inc hay . php để các lệnh này có thể biên dịch được khi thực thi.

c. Thẻ PHP và require()

Các lệnh PHP cần phải được bao bởi cặp thẻ PHP <?php?>. Nếu chúng ta không có thẻ PHP <?php?> khi viết lệnh PHP thì các lệnh PHP này sẽ trở thành dạng văn bản hoặc HTML và không thể thực thi được.

d. Dùng require() cho các template

Nếu ứng dụng web của chúng ta có cùng một mẫu thiết kế nhưng chỉ khác nhau về nội dung bên trong thì chúng ta sẽ tạo ra một mẫu template và chỉ cần khai báo các biến trình bày dữ liệu bên trong template.

Khi template này được thực thi, tất cả các biến này sẽ có giá trị và trình bày như một định dạng template được sử dụng nhiều lần.

Ví dụ: Thông thường trong ứng dụng web phần header và fooder thường được hiện thi ở hầu hết các trang, vì vậy ta sẽ tạo ra trang header.inc và fooder.inc để chứa định dạng và nội dung phần cuối trang. Sau đó, ở trang nào của ứng dụng có sử dụng header và fooder thì chúng ta sẽ chèn hai trang này vào.

Điểm đặc biệt và quan trọng nhất của kết hợp này là sau khi chúng ta đã thực hiện nhiều trang có chèn các trang header.inc và fooder.inc, chúng ta có thể dễ dàng thay đổi trang

header.inc và fooder.inc này. Và chỉ cần lưu lại các thay đổi thì tất cả các trang đã chèn các trang này sẽ tự động thay đổi.

2. INCLUDEa. Cách sử dụnga. Cách sử dụng a. Cách sử dụng

include() cũng có cách sử dụng tương tự require(). Tuy nhiên, chúng có một điểm khác nhau cần phải lưu ý đó là khi nội dung bị lỗi thì dùng require() sẽ xuất hiện thông báo lỗi, trong khi đó dùng include() sẽ chỉ xuất hiện cảnh báo.

Trong những tập tin có dùng require() thì ta không nên sử dụng các câu trúc điều khiển vì sẽ không hiệu quả.

Cú pháp:

include("tên tập tin và đường dẫn đến tập tin");

Ví dụ: Trang tính toán có nội dung như sau:

<?php if($a ==1) { require("tinh_tong.php"); } else { require("tinh_tong.php"); } ?>

Trong ví dụ này khi thực thi trang tinh_toan.php, nội dung bên trong cả hai tập tin là tinh_tong.php và tinh_hieu.php đều được biên dịch, trong khi đó chỉ có một trong hai trường hợp đúng và chỉ cần biên dịch một tập tin khi thỏa mãn điều kiện đúng là đủ. Như vậy, dùng require() trong trường hợp này sẽ không còn thích hợp, thay vào đó chúng ta dùng include().

<?php if($a ==1) { include("tinh_tong.php"); } else { include("tinh_tong.php"); }

?>

b. require_once() và include_once()

Hàm require_once() và include_once() là hai dạng biến đổi của hàm require() và include(). Mục đích của hai hàm này trở nên hữu ích khi chúng ta bắt đầu sử dụng chúng để chèn các thư viện và các hàm vào, sử dụng các cấu trúc này giúp chúng ta tránh được việc chèn cùng một hàm hay thư viện lần thứ hai bởi khi hàm khai báo lại một hàm đã được xây dựng sẽ được phát sinh lỗi.

Việc chèn vào hai lần cùng một tập tin thường xẩy ra khi xây dựng các ứng dụng lớn, khi nhiều tập tin thư viện khác nhau được chèn vào trong cùng một require_once() hay include_once() thì trong lần đầu tiên cách thức hoạt động của nó cũng giống như require() hay include(). Tuy nhiên, require_once() và include_once() nếu được gọi để chèn tập tin đã được chèn thì file này sẽ không chèn được chèn vào nữa. Hàm này là một công cụ thông minh cho việc tạo ra các thư viện dùng lại.

c. Đường dẫn của file được chèn

Sử dụng các hàm đã được giới thiệu ở trên để truy cập các thư viện có thể làm tăng tính mềm dẻo của ứng dụng. Tuy nhiên, vẫn còn có một vấn đề xẩy ra.

d. Ví dụ

II. Mở tập tin và thư mục 1. Tập tin

a. Chế độ mở tập tin

Để mở một tập tin, chúng ta cần xác định chế độ mở. Có 3 tùy chọn cho chế độ mở file: - Mở file ở chế độ read only, write only hay cả read và write.

- Mở file đã tồn tại: chúng ta có thể ghi đè hay ghi thêm vào nội dung đang có của file. Trong trường hợp ghi thêm vào nội dung đã có của file, có hai cách ghi là ghi vào đầu tập tin và ghi vào cuối của tập tin.

- Khi muôn ghi file hệ thống thì chúng ta cần chỉ định chế độ ghi file là nhị phân hoặc text.

Phân loại các chế độ mở file:

Chế độ Mô tả

r Chỉ đọc file, bắt đầu đọc đầu file r+ Đọc và ghi file: Bắt đầu từ đầu file

w Chỉ ghi file. Mở và xóa toàn bộ nội dung của file đã có hoặc tạo ra một file mới nếu file đó không tồn tại, sau đó ghi nội dung vào file.

mới nếu file đó không tồn tại, sau đó ghi nội dung vào file

a Chỉ ghi file. Mở và ghi nội dung vào cuối file hoặc tạo ra một file mới nếu file không tồn tại.

a+ Ghi và đọc dữ liệu. Mở và ghi nội dung vào cuối file hoặc tạo ra một file mới nếu file không tồn tại.

x Tạo và mở file để ghi. Tạo ra một file mới và ghi nội dung vào file. Nếu file đã tồn tại, trả về giá trị FALSE và thông báo lỗi.

x+ Tạo và mở file để đọc và ghi. Tạo ra một file mới và ghi nội dung vào file. Nếu file đã tồn tại, trả về giá trị FALSE và thông báo lỗi.

b. Mở tập tin

Để mở tập tin chúng ta sử dụng hàm fopen(). Cú pháp:

fopen(<tên_tập_tin>,<chế độ mở>)

Ví dụ: Mở file vidu.txt trong thư mục vidu_web, với chế độ mở chỉ đọc.

<?php

$f = fopen("vidu.txt", "r");

?>

c. Đọc tập tin

- Kiểm tra kết thúc tập tin

Để kiểm tra trạng thái kết thúc tập tin hay chưa chúng ta sử dụng hàm feof() Cú pháp:

feof($f)

Trong đó $f là biến khai báo nhận giá trị trả về của hàm fopen(). Hàm trả về kết quả là TRUE nếu con trỏ ở cuối file.

Ví dụ: <?php $f = fopen("vidu.txt", "r"); if(feof($f)) { echo "Ðã kết thúc tập tin"; } ?>

Khi mở file chúng ta có thể đọc nội dung đã được mở theo từng dòng bằng hàm fgets().

Hàm sẽ trả về là chuỗi có độ dài xác định, mặc định độ dài là 1024. Cú pháp:

fgets($f [, int độ dài])

Ví dụ: <?php $f = fopen("vidu.txt", "r"); while(!feof($f)) { $noidung =fgets($f); echo $noidung. "</br>"; } fclose($f); ?>

- Duyệt và đọc từ ký tự trong tập tin

Để đọc nội dung tập tin theo từng ký tự 1 ta sử dụng hàm fgetc()

Cú pháp: fgetc($f) Ví dụ: <?php $f = fopen("vidu.txt", "r"); while(!feof($f)) { $noidung =fgetc($f); echo $noidung; } fclose($f); ?>

- Đọc toàn bộ nội dung tập tin

Để đọc toàn bộ nội dung tập tin ta sử dụng hàm readfile().

Cú pháp:

readfile(<đường dẫn và tên tập tin>);

$f = "vidu.txt";

echoreadfile($f);

?>

d. Định dạng tập tin.

Trước khi ghi chuỗi vào file, chúng ta cần phải định dạng lại chuỗi đó theo nhu cầu xuất dữ liệu trở lại khi đọc file.

Cách thức định dạng là do chúng ta tự thiết lập. Tuy nhiên, có một số định dạng được quy định sẵn như sau:

+ \t : nhảy tab + \n : xuống dòng

e. Ghi nội dung tập tin

Để ghi nội dung vào tập tin ta sử dụng hàm fwrite() Cú pháp:

fwrite(<tập tin>, <nội dung [, <độ dài>]>);

Ví dụ:

f. Đóng tập tin.

Để đóng tập tin đã mở ta sử dụng hàm fclose() Cú pháp:

fclose($f)

Trong đó $f là tên biến nhận giá trị trả về của hàm fopen()

g. Kiểm tra sự tồn tại của tập tin

Để mở file ta thường gặp hai trạng thái, file đó đã có hoặc file đó không tồn tại. Để kiểm tra sự tồn tại của file ta sử dụng hàm file_exists() hoặc is_file()

Cú pháp:

file_exists(<tập tin>)

Trong đó: Hàm trả về kết quả TRUE hoặc FALSE, nếu tồn tại trả về giá trị là TRUE, ngược lại trả về giá trị FALSE

Ví dụ: <?php

if (!file_exists($f)) {

echo "không ton tai file";

exit; } else {

echo readfile($f); }

?>

h. Kiểm tra kích thước file

Để kiểm tra kích thước file ta sử dụng hàm filesize() Cú pháp:

filesize(<đường dẫn và tên của file>);

Vi dụ: Kiểm tra kích thước tập tin

<?php

$f = "vidu.txt";

echo "Size :".filesize($f);

?>

k. Xóa tập tin

Để xóa tập tin ta sử dụng hàm unlink() Cú pháp:

unlink(<tập tin>)

Ví dụ: Xóa tập tin vidu.txt

<?php

$f = "vidu.txt"; if (!unlink($f)) {

echo "Khong xoa dc tap tin $f"; } else {

echo "da xoa tap tin $f"; }

2. Thư mục

a. Tạo thư mục

Để tạo thư mục ta sử dụng hàm mkdir() Cú pháp:

mkdir(<tên thư mục>);

Ví dụ: Tạo thư mục

<?php

mkdir("DIENLOI");

?>

b. Kiểm tra thư mục

Để kiểm tra thư mục ta sử dụng hàm is_dir(), trả về TRUE nếu tồn tại thư mục, ngược lại là FASLE.

Cú pháp:

is_dir(<thư mục>)

Ví dụ: Kiểm tra sự tồn tại của thư mục

<?php

if(!is_dir("DIENLOI")) {

echo "Khong ton tai thu muc"; }

else {

echo "Ton tai thu muc"; }

?>

c. Mở thư mục

Để mở thư mục ta sử dụng hàm opendir(). Kết quả trả về sẽ là nguồn(chứa các thư mục và tập tin) của thư mục nếu thư mục mở thành công, ngược lại trả về giá trị False.

Cú pháp:

opendir(<tên thư mục>)

Ví dụ: Mở thư mục

$dir = opendir("Vidu_php");

?>

d. Đóng thư mục

Khi đã dùng xong thư mục, cần phải đóng thư mục bằng hàm closedir() Cú pháp: closedir(<tên thư mục>) Ví dụ: Đóng thư mục <?php closedir("Vidu_php"); ?> e. Duyệt thư mục

Chúng ta duyệt thư mục bằng cách sử dụng vào lặp kết hợp với hàm readdir() Cú pháp: readdir(<tên thư mục>) Ví dụ: <?php $dir =opendir("Vidu_php"); while(($file = readdir($dir))==true) { echo $file."</br>"; } closedir($dir) ?>

III. Upload tập tin lên server. 1. Giới thiệu

Trong hầu hết các ứng dụng web, thông thường người dùng có thể upload file lên server. Đối với ứng dụng web xây dựng bằng ngôn ngữ PHP chúng ta cũng có thể xây dựng cho người dùng upload file lên server.

2. Các bước upload file

Bưới 1: Tạo form upload file:

<label for ="file"> Tên file </label>

<input type ="file" name ="file_upload" id ="file" /> </br>

<input type ="submit" name ="submit" value ="Upload file" /> </form>

Chú ý:

+ Đối với form để upload file thì trên thẻ form chúng ta bổ sung thêm thuộc tính enctype ="multipart/form-data".

+ Method được sử dụng theo phương thức POST

+ Nếu muốn quyết định kích cỡ tối đa của tập tin upload thì trong thẻ input FileField upload chúng ta bổ sung thêm thuộc tính value = “kích thước tối đa” – đơn vị tính là byte, lúc này thuộc tính name của file field có giá trị là “MAX_FILE_SIZE”.

Bước 2: Viết code thực hiện việc upload file

<?php

if($_FILES["file_upload"]["error"]>0) {

echo "Lỗi của file ".$_FILES["file_upload"]["error"]."</br>"; } else { echo "Upload:".$_FILES["file_upload"]["name"]."</br>"; echo "Type:".$_FILES["file_upload"]["type"]."</br>"; echo "Upload:".($_FILES["file_upload"]["size"]/1024)."Kb</br>";

echo "Temp file: ".$_FILES["tmp_file"]."</br>";

if (file_exists("upload/".$_FILES["file_upload"]["name"])) {

echo $_FILES["file_upload"]["name"]."Ða ton tai"; }

else {

move_uploaded_file($_FILES["file_upload"]["tmp_name"],"Upload/". $_FILES["file_upload"]["name"]);

echo "Lưu trữ "."Upload/".$_FILES["file_upload"]["name"]; }

?>

Bằng cách sử dụng biến $_FILES[tên_đk_field] [tên thuộc tính] ta có thể upload file từ máy client sang server.

Trong đó, tham số thứ nhất là tên điều khiển filefield trên form, tham số thứ hai là một trong những thuộc tính như: name(tên file), type(loại file), size(kích thước byte – tính theo byte), tmp_name(tên tạm của file), error(lỗi)…

Với đoạn code trên, trước tiên ta kiểm tra file upload có bị lỗi hay không, nếu có lỗi thì thông báo lỗi, ngược lại in ra các thuộc tính của file upload. Sau đó kiểm tra xem trong thư mục upload đã có file này hay chưa, nếu đã có thì thông báo, ngược lại thì sử dụng hàm move_uploaded_file(file_tạm, nơi lưu trữ upload) để di chuyển thư mục về thư mục lưu trữ file trên server.

IV. PHP Cookies 1. Khái niệm

Cookie được sử dụng để xác định thông tin của người dùng. Cookie là một file nhỏ được server lưu trữ xuống từng máy tính của người dùng. Mỗi khi máy tính này yêu cầu một trang tới trình duyệt, nó cũng sẽ gửi theo cookie. Với PHP ta có thể tạo ra và sử dụng giá trị của biến cookie.

Một phần của tài liệu tự học php lập trình web - nguyễn văn đại (Trang 124 - 136)