0

Làm việc với file, Cookie và Session trong PHP

I) Làm việc với File trong php

Như chúng ta đã biết, với mọi ngôn ngữ lập trình thì làm việc với file đều có các thao tác cơ bản như mở file, đóng file, đọc dữ liệu từ file và ghi dữ liệu vào file... Ngoài ra, còn có xóa file, đổi tên, tạo file mới...

Ở bài blog này, chúng ta sẽ đi vào các thao tác với file qua ngôn ngữ PHP.

1) Mở, đóng file có sẵn

Trong php để mở một file ta sử dụng lệnh sau:

fopen(string file_name, string option)
file_name: là tên file
option: là cơ chế mở file
Option gồm các giá trị sau:
r: Chỉ đọc file
r: Đọc và ghi file
w: Chỉ ghi file
w+: Ghi và đọc file: Nếu file tồn tại nội dung cũ sẽ bị xóa đi. Nêu file không tồn tại thì sẽ tạo một file mới
a: Mở dưới dạng append, chỉ có write, nếu file tồn tại, sẽ ghi tiếp vào phần dưới của nội dung có sẵn, nếu file không tồn tại sẽ được tạo mới.
a+: Mở dưới dạng append dữ liệu (write và read), nếu file tồn tại, dữ liệu sẽ ghi tiếp vào phần bên dưới của nội dung cũ, nếu file không tồn tại sẽ được tạo mới.
b: Mở dưới chế độ file binary

Lệnh: fclose($file) dùng để đóng file.

Với PHP khi ta gán biến cho lệnh fopen() thì có thể sử dụng chính biến đó trong lệnh if để kiểm tra xem có thể mở file đó không. VD:

if (!$file = fopen("test.txt", "r") {
        echo "Error when open file"
} else {
        fpassthru($file);
}

Trong ví dụ trên có lệnh fpassthru($file) dùng để hiển thị nội dung của file.

2) Đọc và ghi file

Trong php, ta có một số hàm cơ bản để đọc nội dung của file như sau:

fread (file,length); đọc nội dung trong file với độ dài length tương ứng
fgetc(file) đọc 1 ký tự trong file.
fgets(file) đọc 1 dòng trong file.

Khi ta sử dụng lệnh đọc dữ liệu trong file thì giá trị sẽ bắt đầu từ vị trí mà con trỏ của file trỏ tới và con trỏ của file sẽ nhảy tới vị trị kế tiếp, chính vì vậy mà ta có thể đọc tiếp file với 2 lệnh liên tiếp nhau chứ không đọc lại file từ đầu. Bên cạnh đó, PHP cũng hộ trợ lệnh feof(file) để kiểm tra xem đã đọc tới cuối file hay chưa. Để di chuyển vị trí của con trỏ ta có 2 lệnh sau:

rewind(file) nhảy tới đầu file.
fseek(file,offset) nhảy tới vị trí offset tính từ đầu file.

Để ghi dữ liệu vào file ta sử 2 câu lệnh chính:

fwrite(file,str,length);
fputs(file,str,length);

Nếu không truyền biến length thì toàn bộ chuỗi sẽ được ghi vào file, còn nếutruyền biến length thì nó sẽ ghi vào file chuỗi str có độ dài là length.

Lưu ý: Trước khi đọc hay ghi dữ liệu ta đều phải mở file. Khi sử dụng xong thì ta phải close file để tránh mất mát dữ liệu hay hỏng file.

VD: Mở file và in ra 2 dòng chữ đầu tiên trong file. Và chèn thêm dòng: "Công ty Framgia" vào cuối file.

if(!$file = fopen("blog.txt","rw")){
        echo ("could not open file");
  }else{
        echo fgets($file)."<br>".fgets($file);
        fputs($file, "Cong ty Framgia");
        fclose($file);
  }

Ngoài ra còn một số hàm khác, tham khảo http://web24h.com.vn/chi-tiet/94-bai-7-lam-viec-voi-file-va-upload-file-trong-php.html

II) Làm việc với Cookie và Session trong PHP

Tham khảo tại: http://phpandmysql.net/php-can-ban/bai-6-php-can-ban-su-dung-session-va-cookie-trong-php-31.htmlhttp://www.qhonline.info/php-can-ban/26/bai-7--khai-niem-co-ban-ve-cookie-va-session-trong-php.html

Trong 2 bài viết trên, khái niệm về cookie và session là khá rõ ràng. Sau đây mình tổng hợp lại:

  • "Cookie và session là hai phương pháp sử dụng để quản lý các phiên làm việc giữa người sử dụng và hệ thống."

  • "Cookie là 1 đoạn dữ liệu được ghi vào đĩa cứng hoặc bộ nhớ của máy người sử dụng. Nó được trình duyệt gởi ngược lên lại server mỗi khi browser tải 1 trang web từ server."

  • "Session được lưu trữ hoàn toàn trên server, do vậy tính bảo mật rất cao, các website hiện này thường dùng session để lưu thông tin của người dùng khi họ đăng nhập"

  • "Một session được bắt đầu khi người sử dụng truy cập vào ứng dụng lần đầu tiên, và kết thúc khi người sử dụng thoát khỏi ứng dụng."

Như vậy, ta có thể thấy cookie và session có tác dụng tương đối giống nhau. Đều dùng để lưu trữ thông tin giữa người dùng và hệ thống.

Khác nhau: cookie thường được lưu tại máy client còn session thì được lưu tại server. Session sẽ bị mất khi người dùng tắt trình duyệt web còn cookie thì không.

Để làm việc với cookie ta sử dụng các lệnh sau: Setcookie(name,value, time) name là tên của cookie, value là giá trị của cookie đó, time là thời gian tồn tại của cookie.

$_COOKIE['name'] lấy giá trị của cookie đã thiết lập với lệnh trên

Để hủy cookie đã tồn tại ta sử dụng hàm

Setcookie(name) với một biến số là name hoặc Setcookie(name,value, time) với time là giá trị trong quá khứ.

VD:

Setcookie("login_time","12h00", time() + 3000) // Tạo cookie tên là login_time có giá trị "12h00" và tồn tạo trong 50 phút.
 $_COOKIE['login_time'] // Trả về giá trị "12h00"
 Setcookie("login_time") // Xóa cookie

Tương tự với cookie, session cũng có các lệnh thao tác như sau:

session_start(); //chạy session
$_SESSION['name'] = value; //khởi tạo session
unset($_SESSION['name']); // Huỷ session name
session_destroy(); // Huỷ tất cả session

Lưu ý: Khi load 1 trang web thì cookie không thể vừa tạo vừa xóa được ngay còn session thì có thể.

VD: Khi ta tạo cookie và xóa cookie ngay sau đó thì phải đợi đến lần load thứ 2 thì cookie mới bị xóa. Còn session thì sẽ bị xóa ngay lập tức.

Code tại: https://github.com/banlv54/reports_php/commit/08371cd119afa3a09fff2f754dee6630c5a65539


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.