Kết nối

[PHP] Phần 19: Biến toàn cục 2

24 lượt xem 
 Cập nhật lần cuối: 27/01/2019 lúc 11:58:37
Thể loại: Lập trình Web với PHP 

Trong bài này, chúng ta tiếp tục tìm hiểu các loại biến toàn cục khác. Về định nghĩa biến toàn cục, bạn có thể tham khảo phần trước. Nào chúng ta hãy bắt đầu!

Biến toàn cục $_FILES

Theo đúng như cái tên, dạng biến toàn cục $_FILES lưu trữ toàn bộ các tham số về tập tin khi được tải lên (upload) thông qua phương thức POST. $HTTP_POST_FILES cũng tương tự như $_FILES nhưng không phải là biến toàn cục.

Chúng ta hãy xét đến ví dụ chứa 1 form để upload 1 tập tin lên trong PHP.

<!DOCTYPE html>
<html>
<body>

<form action="" method="post" enctype="multipart/form-data">
    <b>Chọn tập tin --- dammio.com:</b>
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload" name="submit">
</form>

<?php
$target_dir = "uploads/"; // thư mục cần tải tập tin lên
/* $target_dir = ""; // nếu để trống được tính là thư mục hiện thời của trang web đang chạy */

//$_FILES["fileToUpload"]["name"] là tên của tập tin tải lên
if (isset($_FILES["fileToUpload"]["name"]))
{
	// Tạo đường dẫn cho tập tin trên server, gồm thư mục + tên tập tin
	$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
}
else $target_file = "";

$uploadOk = 1;

if ($uploadOk == 0) {
    echo "Tập tin chưa được tải lên server.";
// if everything is ok, try to upload file
} else {
	
	// $_FILES["fileToUpload"]["tmp_name"] là thư mục lưu trữ tạm tập tin
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "Tập tin <a target='_blank' href='". $target_file . "'>" . basename( $_FILES["fileToUpload"]["name"]). "</a> đã được tải lên.";
    } else {
        echo "Lỗi tải tập tin.";
    }
}

?>
</body>
</html>

Lưu ý đây chỉ là ví dụ đơn giản để upload 1 tập tin bằng PHP, bạn cần thêm 1 số đoạn code để hoàn chỉnh hơn chức năng upload file. Theo ví dụ trên, biến toàn cục $_FILES có thể chứa một số thông tin về tập tin tải lên như sau:

  • Tên tập tin: $_FILES[“fileToUpload”][“name”], với fileToUpload là tên trường file cần upload ở 1 form nào đó
  • Tên tập tin lưu trữ tạm ở server: $_FILES[“fileToUpload”][“tmp_name”]
  • Kích thước tập tin: $_FILES[“fileToUpload”][“size”]

Biến toàn cục $_ENV

Biến toàn cục $_ENV chứa một mảng kết hợp các biến truyền qua đoạn mã hiện tại thông qua môi trường phương thức. Chắc hẳn nhiều bạn đã học qua PHP cũng không thể hiểu rõ biến toàn cục này để làm gì vì đơn giản cách dùng biến này tương đối khó hiểu và cũng như ít được sử dụng. ENV là từ viết tắt của từ Enviroment, tức là môi trường.

Hãy xét đến trường hợp sau. Bạn có 2 môi trường để chạy ứng dụng. Một môi trường cục bộ dành để phát triển, dò lỗi. Một môi trường để chạy trên thực tế. Cả 2 môi trường này đều kết nối cùng 1 database. Server MySQL cục bộ tất nhiên có các yêu cầu chứng thực khác với server MySQL kết nối từ xa. Khi đó tập tin cấu hình (config file) sẽ lưu trữ thông tin này. Tuy nhiên, làm sao để quản lý cấu hình khác nhau ở môi trường khác nhau. Và nếu bạn xây dựng ứng dụng theo nhóm, mỗi người trong nhóm đều có 1 cấu hình riêng, vấn đề ở đây là quản lý code và phân chia code thế nào cho hợp lý? Khi đó, chỉ có 1 giải pháp, bạn phải đặc tả môi trường được lưu trong các biến ENV.

Để hiểu rõ về $_ENV có lẽ nên cần 1 bài viết chi tiết hơn về cách sử dụng cũng như demo toàn bộ quy trình. Bài viết này chỉ dừng ở mức giải thích cho bạn hiểu về biến toàn cục $_ENV.

Biến toàn cục $_COOKIE và $_SESSION

Về bản chất, 2 dạng biến này giống nhau, tức là lưu trữ tạm thông tin của server và người dùng khi website hoạt động. Điểm khác biệt là Cookie lưu trữ biến dung lượng nhỏ, ở phía máy người dùng cho nên ít bảo mật hơn; ngược lại Session lưu trữ thông tin ở máy chủ, cho phép lưu bao nhiêu dung lượng tùy ý phụ thuộc vào năng lực server và tất nhiên lưu ở server nên Session bảo mật hơn.

Nếu bạn làm website về forum, mạng xã hội,… không cần nhiều bảo mật thì bạn có thể dùng Cookie để giúp người dùng đăng nhập nhanh hơn và thuận tiện. Nếu bạn làm website về tài chính ngân hàng, tiền tệ, hệ thống yêu cầu bảo mật thì tốt nhất là nên dùng Session. Cũng có 1 số website kết hợp 2 dạng, tức nếu Cookie không hoạt động thì dùng Session, hoặc kết hợp thêm chứng thực bằng địa chỉ IP, số điện thoại, email,… để tăng cường bảo mật.

Về cách sử dụng $_COOKIE và $_SESSION thì bạn sẽ được học ở các bài viết tiếp theo.

Kết luận

Bài viết đã trình bày cho bạn một số kiến thức về các dạng biến toàn cục còn lại. Mời bạn tiếp tục theo dõi bài tiếp theo.

Bình luận Facebook

2
Để lại bình luận

avatar
1000
2 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Các tác giả bình luận
Các tác giả bình luận gần đây
  Theo dõi  
mới nhất cũ nhất được bình chọn nhiều nhất
Thông báo của
trackback

[…] [PHP] Phần 19: Biến toàn cục 2 – 25 tháng 01, 2019 lúc 12:33:15 Chiều […]

trackback

[…] [PHP] Phần 19: Biến toàn cục 2 – 25 tháng 01, 2019 lúc 12:33:15 Chiều […]