Tôi thực hiện một số xác thực biểu mẫu để đảm bảo rằng tệp mà người dùng đã tải lên đúng loại. Nhưng tải lên là tùy chọn, vì vậy tôi muốn bỏ qua việc xác thực nếu anh ta không tải lên bất cứ điều gì và gửi phần còn lại của biểu mẫu. Làm thế nào tôi có thể kiểm tra xem anh ấy có tải lên thứ gì đó hay không? Liệu $_FILES['myflie']['size'] file = $_FILES[$this->formField];
if[!file_exists[$this->file['tmp_name']] || !is_uploaded_file[$this->file['tmp_name']]]{
$this->errors['FileNotExists'] = true;
return false;
}
return true;
}
Ivar
5.66012 Huy hiệu vàng51 Huy hiệu bạc58 Huy hiệu Đồng12 gold badges51 silver badges58 bronze badges
Đã trả lời ngày 3 tháng 6 năm 2009 lúc 18:42Jun 3, 2009 at 18:42
karim79karim79karim79
336K67 Huy hiệu vàng411 Huy hiệu bạc405 Huy hiệu Đồng67 gold badges411 silver badges405 bronze badges
4
Mã này làm việc cho tôi. Tôi đang sử dụng nhiều tải lên tệp vì vậy tôi cần kiểm tra xem có tải lên không.
Phần HTML:
PHP PHẦN:
if[isset[$_FILES['files']] ]{
foreach[$_FILES['files']['tmp_name'] as $key => $tmp_name ]{
if[!empty[$_FILES['files']['tmp_name'][$key]]]{
// things you want to do
}
}
Trig
9.8246 huy hiệu vàng55 Huy hiệu bạc106 Huy hiệu đồng6 gold badges55 silver badges106 bronze badges
Đã hỏi ngày 3 tháng 6 năm 2009 lúc 18:38Jul 14, 2014 at 16:24
Bạn có thể sử dụng is_uploaded_file[]
:pranjal
Từ các tài liệu:4 silver badges5 bronze badges
Trả về đúng nếu tệp được đặt tên bởi FileName đã được tải lên qua bài đăng HTTP. Điều này rất hữu ích để giúp đảm bảo rằng người dùng độc hại đã không cố gắng lừa tập lệnh vào hoạt động trên các tệp mà không nên làm việc-vì, /etc /passwd.
/**
* Tests all upload fields to determine whether any files were submitted.
*
* @return boolean
*/
function files_uploaded[] {
// bail if there were no upload forms
if[empty[$_FILES]]
return false;
// check for uploaded files
$files = $_FILES['files']['tmp_name'];
foreach[ $files as $field_title => $temp_name ]{
if[ !empty[$temp_name] && is_uploaded_file[ $temp_name ]]{
// found one!
return true;
}
}
// return false if no files were found
return false;
}
Loại séc này đặc biệt quan trọng nếu có bất kỳ cơ hội nào được thực hiện với các tệp được tải lên đều có thể tiết lộ nội dung của chúng cho người dùng hoặc thậm chí với người dùng khác trên cùng một hệ thống.Jun 18, 2012 at 19:58
doub1ejackdoub1ejackdoub1ejack
Chỉnh sửa: Tôi đang sử dụng nó trong lớp Fileupload của mình, trong trường hợp nó giúp:18 gold badges64 silver badges118 bronze badges
1
Ivar
function isUploadOkay[$form_name, &$error_message] {
if [!isset[$_FILES[$form_name]]] {
$error_message = "No file upload with name '$form_name' in form.";
return false;
}
$error = $_FILES[$form_name]['error'];
// List at: //php.net/manual/en/features.file-upload.errors.php
if [$error != UPLOAD_ERR_OK] {
switch [$error] {
case UPLOAD_ERR_INI_SIZE:
$error_message = 'The uploaded file exceeds the upload_max_filesize directive in php.ini.';
break;
case UPLOAD_ERR_FORM_SIZE:
$error_message = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.';
break;
case UPLOAD_ERR_PARTIAL:
$error_message = 'The uploaded file was only partially uploaded.';
break;
case UPLOAD_ERR_NO_FILE:
$error_message = 'No file was uploaded.';
break;
case UPLOAD_ERR_NO_TMP_DIR:
$error_message = 'Missing a temporary folder.';
break;
case UPLOAD_ERR_CANT_WRITE:
$error_message = 'Failed to write file to disk.';
break;
case UPLOAD_ERR_EXTENSION:
$error_message = 'A PHP extension interrupted the upload.';
break;
default:
$error_message = 'Unknown error';
break;
}
return false;
}
$error_message = null;
return true;
}
5.66012 Huy hiệu vàng51 Huy hiệu bạc58 Huy hiệu ĐồngMar 16, 2017 at 12:17
Đã trả lời ngày 3 tháng 6 năm 2009 lúc 18:42Simon Backx
336K67 Huy hiệu vàng411 Huy hiệu bạc405 Huy hiệu Đồng13 silver badges15 bronze badges
Select image to upload:
Mã này làm việc cho tôi. Tôi đang sử dụng nhiều tải lên tệp vì vậy tôi cần kiểm tra xem có tải lên không.
Phần HTML:Jul 22, 2015 at 13:06
PHP PHẦN:shiv
Đã trả lời ngày 14 tháng 7 năm 2014 lúc 16:243 silver badges12 bronze badges
Pranjalpranjal
3414 Huy hiệu bạc5 Huy hiệu Đồng
@Karim79 có câu trả lời đúng, nhưng tôi phải viết lại ví dụ của anh ấy để phù hợp với mục đích của tôi. Ví dụ của anh ấy giả định rằng tên của trường đã gửi được biết và có thể được mã hóa cứng. Tôi đã tiến thêm một bước và tạo một hàm sẽ cho tôi biết nếu có bất kỳ tệp nào được tải lên mà không phải biết tên của trường tải lên.
Trig
9.8246 huy hiệu vàng55 Huy hiệu bạc106 Huy hiệu đồng6 gold badges55 silver badges106 bronze badges
Đã trả lời ngày 18 tháng 6 năm 2012 lúc 19:58Apr 13, 2015 at 6:54
TD_NijboerTD_NijboerTD_Nijboer
10.1k18 Huy hiệu vàng64 Huy hiệu bạc118 Huy hiệu đồng1 gold badge13 silver badges17 bronze badges
Bạn nên sử dụng
public function fileUploaded[]
{
if[empty[$_FILES]] {
return false;
}
$this->file = $_FILES[$this->formField];
if[!file_exists[$this->file['tmp_name']] || !is_uploaded_file[$this->file['tmp_name']]]{
$this->errors['FileNotExists'] = true;
return false;
}
return true;
}
0. Nó trả về public function fileUploaded[]
{
if[empty[$_FILES]] {
return false;
}
$this->file = $_FILES[$this->formField];
if[!file_exists[$this->file['tmp_name']] || !is_uploaded_file[$this->file['tmp_name']]]{
$this->errors['FileNotExists'] = true;
return false;
}
return true;
}
1 nếu không có tệp được tải lên. Danh sách đầy đủ: PHP: Thông báo lỗi được giải thíchif[!file_exists[$_FILES['fileupload']['tmp_name']] || !is_uploaded_file[$_FILES['fileupload']['tmp_name']]]
{
echo 'No upload';
}
else
echo 'upload';
Trig
9.8246 huy hiệu vàng55 Huy hiệu bạc106 Huy hiệu đồng6 gold badges55 silver badges106 bronze badges
Đã trả lời ngày 16 tháng 3 năm 2017 lúc 12:17Jul 31, 2014 at 5:28