Mã mẫu
https. //www. php. net/manual/en/class. kho lưu trữ zip. php
ZipArchive::extractTo[]
đã có bảo vệ ZIP Slip rồi
Người giới thiệu
Lỗ hổng trượt Zip
NIST - CVE-2019-0191 Chi tiết
$zip = new ZipArchive;
$res = $zip->open['test.zip', ZipArchive::CREATE];
if [$res === TRUE] {
$zip->addFromString['test.txt', 'file content goes here'];
$zip->close[];
echo 'ok';
} else {
echo 'failed';
}
?>
Ghi chú. Để có tính di động tối đa, bạn nên luôn sử dụng dấu gạch chéo về phía trước [/
] làm dấu tách thư mục trong tên tệp ZIP
Thông số
filename
Đường dẫn đến tệp cần thêm
entryname
Nếu được cung cấp, đây là tên cục bộ bên trong kho lưu trữ ZIP sẽ ghi đè lên filename
$entryname
0Đối với sao chép một phần, vị trí bắt đầu
$entryname
1Đối với sao chép một phần, chiều dài được sao chép, nếu 0 hoặc -1 thì toàn bộ tệp [bắt đầu từ $entryname
0] được sử dụng
$entryname
3Bitmask bao gồm $entryname
4, $entryname
5, $entryname
6, $entryname
7. Hoạt động của các hằng số này được mô tả trên trang hằng số ZIP
Giá trị trả về
Trả về $entryname
8 khi thành công hoặc $entryname
9 khi thất bại
Nhật ký thay đổi
Phiên bảnMô tả8. 0. 0 / 1. 18. 0____8_______3 đã được thêm vàoví dụ
Ví dụ này mở một bài kiểm tra lưu trữ tệp ZIP. zip và thêm tệp /path/to/index. txt. như tên mới. txt
Ví dụ #1 Mở và thêm NULL
1= mới ZipArchive;
nếu [$zip->open['test. zip'] === TRUE] {
$zip->addFile['/đường dẫn/đến/chỉ mục. txt', 'tên mới. txt'];
$zip->đóng[];
lặp lại 'ok';
} khác {
tiếng vang 'không thành công';
}
?>
ghi chú
Ghi chú
Khi một tệp được đặt để thêm vào kho lưu trữ, PHP sẽ khóa tệp. Khóa chỉ được giải phóng khi đối tượng ZipArchive đã được đóng, thông qua ZipArchive. close[] hoặc đối tượng ZipArchive bị hủy. Điều này có thể khiến bạn không thể xóa tệp đang được thêm cho đến sau khi mở khóa
Lưu trữ Zip. addFromString [ chuỗi
$localname
, chuỗi$contents
[, int$flags
= ZipArchive. FL_OVERWRITE ] ]. boolGhi chú. Để có tính di động tối đa, bạn nên luôn sử dụng dấu gạch chéo lên [/] làm dấu phân cách thư mục trong tên tệp ZIP
Thông số
localname
Tên của mục cần tạo
contents
Nội dung sử dụng để tạo mục nhập. Nó được sử dụng trong chế độ an toàn nhị phân
flags
Bitmask bao gồm ZipArchive::FL_OVERWRITE
, ZipArchive::FL_ENC_GUESS
, ZipArchive::FL_ENC_UTF_8
, ZipArchive::FL_ENC_CP437
. Hoạt động của các hằng số này được mô tả trên trang hằng số ZIP
$zip = new ZipArchive;
$res = $zip->open['test.zip', ZipArchive::CREATE];
if [$res === TRUE] {
$zip->addFromString['test.txt', 'file content goes here'];
$zip->close[];
echo 'ok';
} else {
echo 'failed';
}
?>
Lưu trữ Zip. Hàm addFromString[] là một hàm sẵn có trong PHP được sử dụng để thêm một tệp vào kho lưu trữ zip cùng với nội dung của nó
cú pháp
bool ZipArchive::addFromString[ string $name, string $content, int $flags = ZipArchive::FL_OVERWRITE ]
Thông số. Hàm này chấp nhận ba tham số như đã đề cập ở trên và được mô tả bên dưới
- tên $. Tham số này giữ tên của tập tin
- nội dung $. Tham số này chứa nội dung được sử dụng để tạo mục nhập. Nội dung được sử dụng ở chế độ an toàn nhị phân
- $flags. Tham số này giữ bitmask bao gồm ZipArchive. FL_OVERWRITE, ZipArchive. FL_ENC_GUESS, Lưu trữ Zip. FL_ENC_UTF_8 và ZipArchive. FL_ENC_CP437
Giá trị trả về. Hàm này trả về “true” nếu thành công và “false” nếu thất bại
ví dụ 1. Trong ví dụ này, chúng tôi sẽ tạo một tệp và thêm chuỗi vào tệp bằng PHP ZipArchive. hàm addFromString[]