Lập trình mã nguồn mở - 18

Hình 2 28 Đăng ký cookie Ngài ra có thể gán giá trị cookie bằng session Chẳng 1

Hình 2.28. Đăng ký cookie

Ngài ra, có thể gán giá trị cookie bằng session. Chẳng hạn, chúng ta sử dụng hàm session_set_cookie_params để gán cookie như ví sau:

Ví dụ:Gán cookie bằng session

<?php

session_start();

$myvalue="Online Recruitment"; session_set_cookie_params($myvalue);

?>

<HTML>

<HEAD>

Có thể bạn quan tâm!

Xem toàn bộ 270 trang tài liệu này.

<TITLE>::Welcome to PHP</TITLE>

</HEAD>

<BODY>

<h4>Session-Cookie</h4>

</BODY>

</HTML>

Bằng cách sử dụng $HTTP_COOKIE_VARS để lấy giá trị của cookie trước đó trong trang httpcookievar.php như ví dụ sau.

Ví dụ:Sử dụng $HTTP_COOKIE_VARS

<?php

echo $HTTP_COOKIE_VARS["huukhang"];

?>

<HTML>

<HEAD>

<TITLE>::Welcome to PHP</TITLE>

</HEAD>

<BODY>

<h4>Get Cookie</h4>

</BODY> </HTML>

Kết quả trình bày như hình.


Hình 2 29 Dùng HTTP COOKIE VARS Bằng cách sử dụng hàm session get cookie params để 2

Hình 2.29. Dùng $HTTP_COOKIE_VARS

Bằng cách sử dụng hàm session_get_cookie_params để lấy giá trị của cookie trước đó trong trang sessiongetcookie.php như ví dụ sau.

Ví dụ:Sử dụng session_get_cookie_params

<?php

session_start();

$myvalue= session_get_cookie_params(); echo $myvalue[1];

?>

<HTML>

<HEAD>

<TITLE>::Welcome to PHP</TITLE>

</HEAD>

<BODY>

<h4>Get Cookie</h4>

</BODY>

</HTML>

c) Hủy Cookie

Để hủy 1 cookie đã được tạo ta có thể dùng 1 trong 2 cách sau: Cú pháp: setcookie("Tên cookie")

Gọi hàm setcookie với chỉ duy nhất tên cookie mà thôi. Dùng thời gian hết hạn cookie là thời điểm trong quá khứ.

Ví dụ:

setcookie("name","Kenny Huy",time()-3600);

Ví dụ:

Tiếp tục tạo trang cookie3.php với nội dung sau:

<?php

setcookie("name","Kenny Huy",time()-360);

?>

<html>

<head>

<title>Test page 1</title></head>

<body>

<b><a href=cookie2.php>Click here</a></b>

</body>

</html>

2.13.3. Đối tượng Server

Ngoài các thông tin trình duyệt gửi lên thông qua các con đường POST, GET,COOKIES, chúng ta cũng có thể thu được một số thông tin khác có liên quan đến trìnhduyệt cũng như các thông số liên quan đến máy chủ như: đường dẫn, địa chỉ IP, phiênbản… Các thông tin này được lưu trữ trong biến $_SERVER (đối với các phiên bảnmới) hoặc $HTTP_SERVER_VARS (đối với các phiên bản cũ hơn bản 4.1.0):

$_SERVER['HTTP_HOST'] / $_SERVER['SERVER_NAME']: Tên của máy

chủ host, nơi mà đoạn script được thực thi.

$_SERVER['PHP_SELF']: Tên file nằm trên folder gốc của website. Ví dụ:biến $_SERVER['PHP_SELF'] trong script đặt tại địa chỉ

$_SERVER['DOCUMENT_ROOT']: Folder gốc của website, nơi mà file scriptđang được thực thi. Ví dụ: C:/AppServ/www

$_SERVER['HTTP_USER_AGENT'] : Cho biết trình duyệt mà user đangdùng. Ví dụ: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1) hay Mozilla/5.0(Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4

$_SERVER['HTTP_REFERER']: địa chỉ của trang web mà từ đó user link đếntrang này.

$_SERVER['REMOTE_ADDR']: Địa chỉ của máy client, nơi người sử dụngđang duyệt web.

$_SERVER['SERVER_SOFTWARE']: Chuỗi định danh của máy chủ, thườngđược cấp trong phần header khi trả lời các yêu cầu từ máy khách. Ví dụ: Apache/2.2.4(Win32) PHP/5.2.3

$_SERVER['SCRIPT_FILENAME']: Đường dẫn tuyệt đối của file script đangchạy. C:/AppServ/www/laptrinhphp/abc.phpVí dụ: code sau đây sử dụng đối tương Server

<?php

echo 'HTTP_HOST: '. $_SERVER['HTTP_HOST'].'<br>'; echo 'PHP_SELF: '.$_SERVER['PHP_SELF'].'<br>';

echo 'DOCUMENT_ROOT: '. $_SERVER['DOCUMENT_ROOT'].'<br>'; echo 'HTTP_USER_AGENT: '.$_SERVER['HTTP_USER_AGENT'] .'<br>';

echo 'HTTP_REFERER: '. $_SERVER['HTTP_REFERER'].'<br>'; echo 'REMOTE_ADDR: '. $_SERVER['REMOTE_ADDR'].'<br>';

echo 'SCRIPT_FILENAME: '. $_SERVER['SCRIPT_FILENAME'] .'<br>';

?>

10.14. Các hàm xử lý file trong php

Việc xử lý file trong php rất quan trọng vì file trong các ứng dụng thực tế được tận dùng để lưu trữ dữ liệu như cache website, hay để lưu một thứ gì đó để cho ứng dụng chạy nhanh hơn, ... Phần này giúp làm quen với một số hàm liên quan đến file như đọc file, ghi file, tạo folder mới, xóa folder, xóa file, upload file.

1) Mở File

Để mở một file ta dùng cú pháp sau: open($path, $option). Trong đó $path là đường dẫn đến file cần mở, $option là quyền cho phép thao tác trên file. Ta có danh sách các quyền sau:

Ví dụ:

<strong>// Mở một file, ta dùng dấu @ đặt trước hàm fopen

// để phòng trường hợp đường dẫn $path ta truyền

// vào bị sai nó sẽ không bung lỗi ra màn hình.

// Đường dẫn $path có thể là đường dẫn tương đối

// hoặc tuyệt đối đều được

$path = 'demo.txt';

$fp = @fopen($path, "r");

// Kiểm tra file mở thành công không if (!$fp) {

echo 'Mở file không thành công';

}

else{

echo 'Mở file thành công';

}</strong>

2) Đọc File

Có 3 cách đọc file thông thường trong PHP đó là đọc từng dòng, đọc từng ký tự và đọc hết file.

Ta dùng hàm fgetc($fp) để đọc theo từng ký tự, dùng fgets($fp) để đọc theo từng dòng. Đối với đọc từng dòng và đọc từng ký tự ta phải dùng hàm feof($fp) đặt trong vòng lặp để có thể đọc đến dòng hay ký tự cuối cùng.

Để đọc hết tất cả file ta dùng hàm fread($fp, $size), trong đó $fp là đối tượng lúc mở file còn $size là kích cỡ của file cần đọc. Để lấy kích cỡ của file cần đọc ta dùng hàm filesize($path).

Ví dụ:Đọc file từng ký tự

<strong>$fp = @fopen('demo.txt', "r");

// Kiểm tra file mở thành công không if (!$fp)

{

echo 'Mở file không thành công';

}

else

{

// Lặp qua từng ký tự để đọc while(!feof($fp))

{

echo fgetc($fp);

}

}</strong>

Ví dụ:Đọc file từng dòng

<strong>$fp = @fopen('demo.txt', "r");

// Kiểm tra file mở thành công không if (!$fp)

{

echo 'Mở file không thành công';

}

else

{

// Lặp qua từng dòng để đọc while(!feof($fp))

{

echo fgets($fp);

}

}</strong> Ví dụ:Đọc hết file

<strong>$fp = @fopen('demo.txt', "r");

// Kiểm tra file mở thành công không if (!$fp)

{

echo 'Mở file không thành công';

}

else{

// Đọc file và trả về nội dung

$data = fread($fp, filesize('demo.txt')); echo $data;

}</strong>

3) Ghi File

Để ghi nội dung vào file ta dùng hàm fwrite($fp, $content) trong đó $fp là đối tượng trả về lúc mở file, còn $content là nội dung muốn ghi vào.

Việc ghi file phụ thuộc vào lúc mở file như thế nào. Ví dụ lúc mở file ghi đè thì lúc ghi file nó sẽ ghi đè, lúc mở file ghi kiểu append thì lúc ghi file nó sẽ thêm xuống cuối file, nếu mở file chỉ cho đọc thì không thể ghi file được.

Ví dụ:

$fp = @fopen('demo.txt', "w");

// Kiểm tra file mở thành công không if (!$fp) {

echo 'Mở file không thành công';

}

else{

$data = 'freetuts.net file functions tutorial'; fwrite($fp, $data);

}

4) Đóng File

Việc mở file để sử dụng mà không đóng file rất nguy hiểm, vì thế sau khi sử dụng xong nên đóng file để an toán hơn. Để đóng file ta dùng hàm fclose($fp) trong đó

$fp là đối tượng trả về lúc mở file.

Ví dụ:

$fp = @fopen('demo.txt', "w");

// Kiểm tra file mở thành công không if (!$fp)

{

echo 'Mở file không thành công';

}

Else

{

$data = 'freetuts.net file functions tutorial';

// Ghi file fwrite($fp, $data);

// Đóng file fclose($fp);

}

5) Upload file lên server

Khi upload một file lên thì trên Server sẽ nhận được 5 thông số cho một file, và PHP sẽ dựa vào các thông số đó để tiến hành upload, các thông số đó là:

- name: Tên của file bạn upload

- type: Kiểu file mà bạn upload (hình ảnh, word, …)

- tmp_name: Đường dẫn đến file upload ở client

- error: Trạng thái của file bạn upload, 0 => không có lỗi

- size: Kích thước của file bạn upload

Bây giờ chúng ta tiến hành upload.

Bước 1: Tạo file upload.php trong thư mục WWW của WebServer, sau đó copy nội dung này vào

<!DOCTYPE html>

<html><head><title></title>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

</head>

<body>

<form method="post" action="" enctype="multipart/form-data">

<input type="file" name="avatar"/>

<input type="submit" name="uploadclick" value="Upload"/>

</form>

<?php

// Xử Lý Upload var_dump($_FILES);

?>

</body>

</html>

Lưu ý rằng để upload file được thì form phải có thuộc tính enctype=”multipart/form-data” như trong code trên.

Cũng giống như POST và GET, tất cả các file upload lên sẽ được lưu trữ trong một biến cục bộ tên là $_FILES, nên trong đoạn code trên mình có var_dump biến $_FILES để xem thông tin file mình upload lên. Bây giờ chạy file này lên, chọn upload một file bất kỳ và nhấn vào button Upload, sẽ thấy 5 thông tin đã đề cập ở trên.

Bước 2: Tạo một folder upload cùng cấp với file upload.php, sau đó sửa lại file upload.php như sau:

<!DOCTYPE html>

<html>

<head>

<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

</head>

<body>

<form method="post" action="" enctype="multipart/form-data">

<input type="file" name="avatar"/>

<input type="submit" name="uploadclick" value="Upload"/>

</form>

<?php // Xử Lý Upload

// Nếu người dùng click Upload

if (isset($_POST['uploadclick'])){

// Nếu người dùng có chọn file để upload if (isset($_FILES['avatar'])){

// Nếu file upload không bị lỗi,

// Tức là thuộc tính error > 0

if ($_FILES['avatar']['error'] > 0){ echo 'File Upload Bị Lỗi';

}

else{

// Upload file move_uploaded_file($_FILES['avatar']['tmp_name'],

'./folder/'.$_FILES['avatar']['name']); echo 'File Uploaded';

}

}

else {

echo 'Bạn chưa chọn file upload';

}

}

?>

</body>

</html>

Phần comment bên trong code đã giải thích rò, Riêng hàm move_uploaded_file($client_path, $server_path) sẽ có 2 thông số, $client_path là

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 15/07/2022