1. Trang chủ
  2. » Công Nghệ Thông Tin

Manual programming Experience Handbook part 59 ppsx

5 138 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 140,21 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trên thanh address sẽ hiện ra url: process.php?name=admin&age=20 Nếu xem xét một cách kỹ lưỡng HTTP Request, ta sẽ thấy nó như sau: Code: GET /process.php?name=admin&age=20 HTTP/1.1 Host

Trang 1

Code:

GET /def/ HTTP/1.1

Host: www.abc.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)

Gecko/20050225 Firefox/1.0.1

Connection: Keep-Alive

Như các bạn có thể thấy, 2 ví dụ trên đều dùng phương thức GET để request dữ liệu

Giờ hãy tưởng tượng, sau khi điền vào form 1 giá trị name là admin, age là 20, bạn bấm nút submit để gửi dữ liệu đến file process.php

Trên thanh address sẽ hiện ra url: process.php?name=admin&age=20

Nếu xem xét một cách kỹ lưỡng HTTP Request, ta sẽ thấy nó như sau:

Code:

GET /process.php?name=admin&age=20 HTTP/1.1

Host: www.abc.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)

Gecko/20050225 Firefox/1.0.1

Connection: Keep-Alive

Tóm lại, khi dùng phương thức GET, trình duyệt sẽ gửi Request tới server với các tham số đặt trong dòng đầu tiên (request-line)

Còn với phương thức POST thì sao? Thay nằm trong request-line, những tham số này được đặt trong phần request-body

Ví dụ ta giữ nguyên form trên, chỉ thay method="GET" bằng method="POST" và bấm Submit Khi đó đây sẽ là HTTP Request "behind the scene":

Code:

POST / HTTP/1.1

Host: www.abc.com

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)

Gecko/20050225 Firefox/1.0.1

Trang 2

Content-Type: application/x-www-form-urlencoded

Content-Length: 40

Connection: Keep-Alive

name=admin&age=20

Có thể dễ dàng thấy rằng, ngoài việc thêm một số dòng vào phần header:

Code:

Content-Type: application/x-www-form-urlencoded

Content-Length: 40

Connection: Keep-Alive

thì phương thức POST đã "cất" các tham số của mình trong phần request-body Điều này hiển nhiên khác hẳn phương thức GET

Bài học hôm nay chính thức được kết thúc ở đây <:-P

(và tớ cũng đi xem phim smallville tiếp đây )

identical(UDS)

Một số thao tác với file

Làm việc với hệ thống file trên web server là một việc không mấy khó khăn trong PHP Bài hôm nay sẽ đề cập đến Một số thao tác với file trong PHP

1 Mở file

Để mở file trong PHP, ta sử dụng hàm fopen Hàm này nhận 2 đối số: tên file và chế độ Cách sử dụng như sau:

PHP Code:

$handle = fopen(filename, mode);

Filename là một xâu cho thấy đường dẫn tới file cần mở Ví dụ:

'/home/httpd/webapp/logs/errorlog.log'

Trang 3

Mode chỉ ra cách thức ta muốn mở file Sau đây là các giá trị có thể có của mode:

r File mở ở trạng thái chỉ đọc Con trỏ file đặt ở đầu file

r+ File mở ở trạng thái cả đọc và ghi Con trỏ file đặt ở đầu file

w File mở ở trạng thái chỉ ghi Nếu file ko tồn tại, nó sẽ được tạo Nếu file tồn tại, nội dung sẽ bị xóa Con trỏ file đặt ở đầu file

w+ File mở ở trạng thái cả đọc và ghi Nếu file tồn tại, nội dung sẽ bị xóa Nếu ko tồn tại, file sẽ được tạo Con trỏ file đặt ở đầu file

a File mở ở trạng thái ghi thêm Con trỏ file đặt ở cuối file

a+ File mở ở trạng thái đọc và ghi thêm Con trỏ file đặt ở cuối file

x File sẽ được tạo ở trạng thái chỉ ghi Nếu file tồn tại, hàm trả giá trị FALSE Nếu file chưa có, hiển nhiên nó sẽ được tạo

x+ File sẽ được tạo ở trạng thái cả đọc và ghi Nếu file tồn tại, hàm trả giá trị FALSE Nếu file chưa có, hiển nhiên nó sẽ được tạo

2 Mở 1 file "từ xa" (remote file)

Để mở 1 file ko nằm trong máy chủ local, ta có thể sử dụng hàm fopen như bình thường, chỉ khác filename là địa chỉ của file cần mở Ví dụ như sau:

PHP Code:

$handle = fopen('http://fileserver/userdata.csv', 'r');

3 Đóng file

Sau khi hoàn tất các lệnh với file, bạn cần phải đóng file lại để báo cho PHP biết mọi việc đã kết thúc Nó đảm bảo rằng nội dung file đã được ghi xuống một cách đầy đủ Ta chỉ việc dùng hàm fclose:

PHP Code:

fclose($file);

4 Đọc file

Bạn có thể dùng một số hàm khác nhau để đọc file

Trang 4

Hàm fgets đọc một dòng trong file text và trả lại kết quả là dòng đó

Hàm fgetc đọc một ký tự duy nhất và trả lại kết quả là ký tự đó

Hàm fread đọc dữ liệu nhị phân và trả lại giá trị vào một buffer

Để kiểm tra xem đã hết file hay chưa, ta sử dụng feof Hàm này trả về giá trị TRUE nếu đã hết file, FALSE nếu vẫn chưa hết Cần nhớ, chúng ta phải quan tâm đến vị trí của con trỏ file Con trỏ file có thể ở vị trí bắt đầu file (0), hoặc ở cuối file, hoặc

ở chỗ nào đó trong file

Giờ ta xét ví dụ sau:

PHP Code:

function read_text_file($in_filename) {

$file = fopen($in_filename, 'r');

$output = array();

while (!feof($file)) {

$buf = fgets($file);

$output[] = $buf;

}

fclose($file);

return $output;

}

Bạn có thể đoán được: Hàm read_text_file() trên đây nhận vào một đối số là tên file, sau đó trả về một mảng $output chứa nội dung file, mỗi phần tử trong mảng là

1 dòng Cụ thể:

Hàm fopen() ban đầu sẽ mở file ở chế độ chỉ đọc

Hàm $output được khởi tạo là rỗng

Chừng nào vẫn còn chưa hết file, ta lần lượt dùng fgets() đọc từng dòng trong file

và đưa vào biến $buf Sau đó gán $buf cho 1 phần tử của mảng $output

Trang 5

Cuối cùng, ta đóng file đó lại và trả về mảng $output

Cũng còn một cách khác để đọc file, đó là sử dụng hàm file_get_contents Khi sử dụng hàm này, toàn bộ nội dung file sẽ được trả về trong một xâu duy nhất Rất tiện lợi, và bạn ko cần phải dùng đến hàm fopen hay fclose Cứ để PHP tự lo lấy!

5 Ghi file

Khi làm việc với file text, ta ghi file bằng hàm fwrite như sau:

PHP Code:

$fruit = array( 'apple', 'orange', 'banana', 'peach');

$file = fopen('fruity.txt', 'w');

foreach ($fruit as $string) {

$result = fwrite($file, $string);

}

fclose($file);

Cực kỳ đơn giản phải ko bạn? Đoạn code trên mở file dưới dạng chỉ ghi, sau đó lần lượt duyệt qua các phần từ của mảng $fruit và ghi chúng vào file

Tuy vậy, khi làm việc với file nhị phân, chúng ta cần bổ sung thêm một đối số cho hàm fwrite Như ví dụ sau đây:

PHP Code:

$binary_data = get_image_bytes();

$file = fopen('imagedata.jpg', 'w');

$result = @fwrite($file, $binary_data, mb_strlen($binary_data, '8bit'));

fclose($file);

Đối số thứ 3, ở trong ví dụ trên là mb_strlen($binary_data, '8bit') sẽ xác định một

Ngày đăng: 06/07/2014, 01:20

TỪ KHÓA LIÊN QUAN