Thêm từ chuỗi zip php

ZIP Slip - Mã mẫu tạo tệp bằng PHP

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

$entryname0

Đối với sao chép một phần, vị trí bắt đầu

$entryname1

Đố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ừ $entryname0] được sử dụng

$entryname3

Bitmask bao gồm $entryname4, $entryname5, $entryname6, $entryname7. 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ề $entryname8 khi thành công hoặc $entryname9 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ào

ví 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 NULL1= 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 ] ]. bool

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 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[]

PHP




Chủ Đề