Professional Documents
Culture Documents
Chuong6 7
Chuong6 7
Chuong6 7
r Read only
r+ Read-write
w Write
Write-read: nếu file đã tồn tại thì nội dung cũ sẽ bị xóa đi, còn nếu
w+
chưa có thì nó sẽ tạo mới.
Mở dưới dạng append dữ liệu, chỉ có write, nếu file đã tồn tại thì
a nội dung mới ghi vào sẽ được ghi vào vị trí cuối của file, còn nếu
chưa có thì tạo mới
Mở mớidưới dạng append dữ liệu (write và read), nếu file đã tồn
a+ tại thì nội dung mới ghi vào sẽ được ghi vào vị trí cuối của file,
còn nếu chưa có thì tạo mới
b Mở file ở định dạng binary
Ví dụ:
<?php
$fp = fopen('test.txt',r) or exit('khong tim thay file');
?>
Lưu ý: Việc mở file ở trên không có nghĩa là file đã được đọc. Để đọc file ta
cần thực hiện các thao tác đọc/duyệt file riêng.
6.2.2 Để đóng file
Để đóng một file đã mở trong PHP ta dùng câu lệnh:
fclose ($biến_file)
Luôn nhớ thực hiện câu lệnh đóng file sau khi thao tác xong.
2
Ví dụ:
<?php
$fp = fopen('test.txt',r) or exit('khong tim thay file');
fclose($fp);
?>
6.2.3 Đọc file
PHP hỗ trợ nhiều hình thức đọc file khác nhau, hai hình thức đọc phổ biến
nhất là: Đọc theo từng dòng và đọc file theo từng ký tự.
Cú pháp đọc file theo từng dòng:
fgets($biến_file_vừa_mở)
Ví dụ:
<?php
$fp = fopen('test.txt',r) or exit('khong tim thay file');
echo fgets($fp);
close($fp);
?>
3
<?php
$fp = fopen('test.txt',r) or exit('khong tim thay file');
while(!feof($fp)){
echo fgets($fp);
}
fclose($fp);
?>
6.2.4 Ghi dữ liệu vào file
Để ghi dữ liệu vào file, ta dùng hàm sau:
fwrite($biến_file, $nội_dung)
Ví dụ:
<?php
$fp = fopen('test.txt',r) or exit('khong tim thay file');
$ndung = 'Dai hoc Quy Nhon';
fwrite($fp,$ndung);
($fp);
?>
6.2.5 Xóa file
Để xóa một file ta dùng cú pháp sau:
unlink('đường dẫn tới file');
ví dụ:
<?php
$file = 'test.txt';
if(file_exists($file)){
unlink($file);
}
?>
4
Ở ví dụ trên chúng ta đang thực hiện kiểm tra xem có tồn tại file test.txt không,
nếu có tồn tài thì thực hiện xóa file này thông qua hàm unlink()
6.2.6 Copy file
Để thực hiện thao tác copy file từ nơi này đến nơi kia trong PHP ta thực hiện
cú pháp sau:
bool copy ( string $source , string $dest );
Trong đó thì $source là file cần copy (file nguồn), $dest là file sẽ lưu sau khi
copy (file đích),hàm copy sẽ trả về giá trị true nếu copy thành công,và ngược lại.
Ví dụ:
<?php
$file = 'test.txt';
$newfile = 'example.txt';
if (!copy($file, $newfile)) {
echo "Có lỗi trong quá trình copy file $file...\n";
}
?>
6.2.7 Tạo thư mục
Để tạo thư mục trong máy tính bằng ngôn ngữ PHP ta dùng cú pháp sau:
mkdir( $pathname, $mode );
Hàm mkdir cho phép tạo thư mục mới, trong đó $pathname: Đường dẫn tới
thư mục cần tạo và $mode: Gán quyền truy cập dữ liệu, mặc định là 0777
(toàn quyền: ghi, xóa, sửa,…).
Ví dụ:
mkdir( "uploads/product" );
6.2.8 Phân quyền cho thư mục
Để phân quyền cho thư mục có trong máy tình bằng ngôn ngữ lập trình PHP
ta dùng cú pháp sau:
chmod($dir, $mode);
Ví dụ: chmod(‘product’, ‘0777’);
6.2.9 Kiểm tra xem có phải là thư mục không
Để kiểm tra một biến chuỗi có phải là thư mục có trong máy tình bằng ngôn
ngữ lập trình PHP ta dùng cú pháp sau:
is_dir($dir);
5
Ví dụ:
if(is_dir(‘uploads/product’))
{
echo ‘Tồn tại thư mục’;
}
6.2.10 Xóa thư mục
Để xóa thư mục có trong máy tình bằng ngôn ngữ lập trình PHP ta dùng cú
pháp sau:
rmdir( $dir) ;
Ví dụ:
if( is_dir("uploads/product") )
{
rmdir ("uploads/product") ;
}
6.2.11 Một số hàm có sẵn làm việc với thư mục
o getcwd(): Lấy đường dẫn thư mục
o dirname( $path_to_dir_or_file ):Lấy đườngdẫn thư mục cha của thư
mục hoặc tập tin đang làm việc
o opendir( $path_to_dir ): Mở một thư mục để làm việc
o readdir( $handle ): Đọc thông tin handle từ thư mục đã mở
o scandir( $path_to_dir):Trả về mảng danh sách file và thư mục hiện có
trong thư mục
o rename( $oldname,$newname ): Đổi tên file hoặc thư mục
6.3 Upload file trong PHP
Tạo file form.php như sau:
<form action="upload.php" method="post" enctype="multipart/form-
data">
File <input type="file" name="myfile" size="30"/>
<input type="submit" name="submitBtn"/>
</form>
6
<?php
$destination_path = getcwd().DIRECTORY_SEPARATOR;
$target_path = $destination_path.basename(
$_FILES['myfile']['name']);
if (($_FILES['myfile']['type'] == 'image/gif') ||
($_FILES['myfile']['type'] == 'image/jpeg') &&
($_FILES['myfile']['size'] < 5120000))
{
if(move_uploaded_file
($_FILES['myfile']['tmp_name'],$target_p
ath))
{ //thông báo upload thành công }
}
?>
7
PHÂN TRANG DỮ LIỆU VÀ BẮT LỖI TRONG ỨNG DỤNG PHP
8
EOT;
}
o Tạo nút bấm chuyển qua các trang
for ( $page = 0; $page <= $sotrang; $page ++ )
{
echo "<a href='index.php?page={$page}'>{$page}</a>";
}
7.2 Phát hiện lỗi và sửa lỗi trong PHP
7.2.1 Phân loại lỗi
a. Lỗi cú pháp (syntax error): Xuất hiện khi ta viết code và được thông báo
khi ta thực thi trang. Nguyên nhân: viết sai hoặc thiếu cú pháp.
b. Lỗi thực thi: Xảy ra khi ta thực thi trang, khó xác định hơn lỗi cú pháp, có
nhiều nguyên nhân dẫn đến lỗi này như: Mở một tập tin đang tồn tại, chia
cho 0, truy xuất bảng không tồn tại trong CSDL, …
c. Lỗi luận lý: xảy ra khi ta thực thi trang, được thể hiện dưới những hình thức
hoặc những kết quả không mong đợi. Nguyên nhân: sai lầm trong thuật giải.
7.2.2 Dò và sửa lỗi
Khi có lỗi phát sinh thì trang thực thi sẽ tự động thông báo lỗi
Cách sửa lỗi:
Xem thông báo lỗi và dòng xảy ra lỗi, mở code và sửa lỗi tại dòng đó (hoặc
dòng lân cận)
Dùng truy …catch để dò lỗi
Try … catch: cho phép thử thực hiện một khối lệnh xem có bị lỗi hay không,
nếu có sẽ bẫy và xử lý lỗi.
o Cấu trúc try … catch có hai khối:
Khối try: các câu lệnh có khả năng gây ra lỗi
Khối catch: các câu lệnh để bẫy và xử lý lỗi phát sinh trên khối try.
Một lỗi xảy ra khi thực thi trang gọi là một Exception. Nếu dòng nào trong
khối lệnh có khả năng tạo ra lỗi thì gọi trả về lỗi đó.
o Cú pháp throw new Exception("Câu thông báo lỗi", code);
Với câu thông báo lỗi và mã lỗi (code) đều là các tham số tùy chọn
Cú pháp:
9
try
{
khối lệnh có khả năng phát sinh lỗi
các lỗi
throw new Exception("Câu thông báo lỗi", code);
}
catch (Exception $e)
{
echo "<p>Lỗi: " . $e->getMessage() . "</p>"; //xuất lỗi
}
Lưu ý: Một khối try có thể dùng một hay nhiều khối catch. Mỗi khối catch hiển
thị một loại lỗi khác nhau.
10