Chuong6 7

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

DỊCH VỤ WEB-BASE EMAIL – UPLOAD TRONG PHP

6.1 Dịch vụ Web-Base Email trong PHP


Trong ngôn ngữ lập trình PHP hỗ trợ cho người dùng nhiều cách để gửi một email
từ ứng dụng web tới một địa chỉ email cụ thể. Để thực hiện cho chức năng này ta
xem cú pháp của một trong những cách gửi email trong PHP như sau:
 Cú pháp: mail(to,subject,message,headers,parameters)
 Ý nghĩa các tham số:
o to: cho biết địa chỉ mà email sẽ gửi thư tới,
o subject: đặt tiêu đề cho email,
o message : nội dung soạn thảo trong mail
o headers :tùy chọn, có thể sử dụng Bcc, Cc
o parameter: tùy chọn, các thông số về trình soạn, gởi mail
Chú ý: Trong phần message: sử dụng ký hiệu \n để xuống dòng.
Ví dụ :
Tạo file có tên Send_mail.php như sau:
<?php
// mình viết thư gởi cho mình
$to = “hovanlam@qnu.edu.vn";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = “ndt473@yahoo.com";
$headers = "From: $from";
@mail($to,$subject,$message,$headers); // không cho warning!
echo "Mail Sent.";
?>
Chú ý: người gởi phải có một đia chỉ mail. Theo dõi các kỹ thuật chống spam
của mỗi trình gởi, nhận mail của người nhận!. Phối hợp với form để soạn thảo một
trình gởi mail. Có thể lập trình để gởi mail đến danh sách các địa chỉ đã lưu trong
CSDL.
1
6.2 Làm việc với file và thư mục trong PHP
6.2.1 Mở files
Để mở 1 file ta sử dụng cú pháp sau:
fopen('path', mode)
Trong đó: path là đường dẫn tới file cần mở, mode là các chế độ mở-thao tác
với file.
Chú ý: ký hiệu đường dẫn \\ hoặc /
mode Diễn giải

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);
?>

 Cú pháp đọc file theo từng ký tự:


fgetc($biến_file_vừa_mở)
Ví dụ:
<?php
$fp = fopen('test.txt',r) or exit('khong tim thay file');
echo fgetc($fp);
fclose($fp);
?>
Dù đọc theo hình thức nào thì trong quá trình đọc, ta cần luôn kiểm tra xem đã
đọc hết file chưa bằng cách dùng hàm:
feof($biến_file_vừa_mở)
Ví dụ:

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>

 Tạo file Upload.php như sau:

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

7.1 Cách tổ chức phân trang cho dữ liệu trong PHP


Phân trang là một trong những kỹ thuật mà hầu hết các lập trình web điều phải
dùng đến. Trong trường hợp dữ liệu đưa lên web site quá nhiều dẫn đến khả năng
quan sát của người dùng không bao quát hết đo đó phải tính đến việc chia nhỏ các
thông tin cần đưa lên web site theo từng trang riêng. Một trong những ứng dụng phân
trang mà chúng ta thấy đó là chương trình tìm kiếm của Google.

 Để phân trang ta làm theo các bước sau:


o Tính tổng số tin trên một trang, ví dụ ta có biến: $baitren_mottrang = 10; ở
đây ta muốn phân 10 tin trên một trang. Nếu chưa chọn trang để xem
mặc định thì ta đang xem trang số 0.
if ( !$_GET['page'] )
{
$page = 0 ;
}
o Sau đó tính số trang cho dữ liệu:
$sodu_lieu = mysql_num_rows(mysql_query("SELECT * FROM `data` ") )
or die(mysql_error());
$sotrang = $sodu_lieu/$baitren_mottrang;
o Đưa dữ liệu các lên trang:
$result =mysql_query("SELECT * FROM `data`ORDER BY `id` DESC
LIMIT {$page}*{$baitren_mottrang},{$baitren_mottrang} ")
or die(mysql_error());
while ( $info = mysql_fetch_array($result ))
{
echo <<<EOT
$info['tenbai_viet']
<br />
$info['noidung']

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

You might also like