Tôi đang đính kèm một hình ảnh với các thẻ trong bảng quản trị và cố gắng lưu id thẻ và tên hình ảnh trong bảng tùy chỉnh của mình cũng như hình ảnh trong thư mục
Upload
8Tôi đã đặt một nút để tải hình ảnh lên trong
Upload
9Đây là mã khối của tôi
protected function _prepareForm[]
{
$model = Mage::registry['tag_tag'];
$form = new Varien_Data_Form[
array['id' => 'edit_form',
'action' => $this->getData['action'],
'method' => 'post',
'enctype' => 'multipart/form-data']
];
$fieldset = $form->addFieldset['base_fieldset',
array['legend'=>Mage::helper['tag']->__['General Information']]];
if [$model->getTagId[]] {
$fieldset->addField['tag_id', 'hidden', array[
'name' => 'tag_id',
]];
}
$fieldset->addField['form_key', 'hidden', array[
'name' => 'form_key',
'value' => Mage::getSingleton['core/session']->getFormKey[],
]];
$fieldset->addField['store_id', 'hidden', array[
'name' => 'store_id',
'value' => [int]$this->getRequest[]->getParam['store']
]];
$fieldset->addField['tag_name', 'text', array[
'name' => 'tag_name',
'label' => Mage::helper['tag']->__['Tag Name'],
'title' => Mage::helper['tag']->__['Tag Name'],
'required' => true,
]];
//custom
$fieldset->addField['tag_image', 'file', array[
'name' => 'tag_image',
'label' => Mage::helper['tag']->__['Tag Image'],
'title' => Mage::helper['tag']->__['Tag Image'],
]];
//end custom
$fieldset->addField['status', 'select', array[
'label' => Mage::helper['tag']->__['Status'],
'title' => Mage::helper['tag']->__['Status'],
'name' => 'tag_status',
'required' => true,
'options' => array[
Mage_Tag_Model_Tag::STATUS_DISABLED => Mage::helper['tag']->__['Disabled'],
Mage_Tag_Model_Tag::STATUS_PENDING => Mage::helper['tag']->__['Pending'],
Mage_Tag_Model_Tag::STATUS_APPROVED => Mage::helper['tag']->__['Approved'],
],
'after_element_html' => ' ' . Mage::helper['adminhtml']->__['[GLOBAL]'],
]];
$fieldset->addField['base_popularity', 'text', array[
'name' => 'base_popularity',
'label' => Mage::helper['tag']->__['Base Popularity'],
'title' => Mage::helper['tag']->__['Base Popularity'],
'after_element_html' => ' ' . Mage::helper['tag']->__['[STORE VIEW]'],
]];
if [!$model->getId[] && !Mage::getSingleton['adminhtml/session']->getTagData[] ] {
$model->setStatus[Mage_Tag_Model_Tag::STATUS_APPROVED];
}
if [ Mage::getSingleton['adminhtml/session']->getTagData[] ] {
$form->addValues[Mage::getSingleton['adminhtml/session']->getTagData[]];
Mage::getSingleton['adminhtml/session']->setTagData[null];
} else {
$form->addValues[$model->getData[]];
}
$this->setForm[$form];
return parent::_prepareForm[];
}
và đây là mã của tôi trong saveAction trong tagController để lưu hình ảnh
$customPostData = $this->getRequest[]->getPost['tag_image'];
//print_r[$customPostData]; die[];
$name = $_FILES["tag_image"]["name"];
$path = $_FILES["tag_image"]["tmp_name"];
$media_path = Mage::getBaseDir['media']."/tagimage";
move_uploaded_file[$path,$media_path."/".$name];
$tagimage_collection = Mage::getModel['sports365/tagimage'];
$tagimage_collection->setTagImage[$name]
->setTagId[$customPostData['tag_id']];
Now my problem is that even I have $customPostData = $this->getRequest[]->getPost['tag_image'];
//print_r[$customPostData]; die[];
$name = $_FILES["tag_image"]["name"];
$path = $_FILES["tag_image"]["tmp_name"];
$media_path = Mage::getBaseDir['media']."/tagimage";
move_uploaded_file[$path,$media_path."/".$name];
$tagimage_collection = Mage::getModel['sports365/tagimage'];
$tagimage_collection->setTagImage[$name]
->setTagId[$customPostData['tag_id']];
Vấn đề của tôi là thậm chí tôi đã thêm
Upload
0 khi khởi tạo biểu mẫu nhưng nó vẫn không hoạt động và không có gì xuất hiện trong
Upload
1Bây giờ nếu tôi đi kiểm tra phần tử, chỉnh sửa dưới dạng html và thêm
Upload
0 vào biểu mẫu, mã của tôi sẽ lưu hình ảnh cả trong thư mục phương tiện và cơ sở dữ liệu Trong hướng dẫn nhanh này, chúng tôi thiết lập một cơ sở HTML biểu mẫu để tải lên hình ảnh bằng PHP, chúng tôi cũng khám phá cách bảo mật tập lệnh PHP của mình để tập lệnh không bị sử dụng bởi những người sử dụng độc hại
Nội dung chính Hiển thị
- Thiết lập biểu tượng tải lên hình ảnh
- Xử lý tải lên cấu hình PHP
- Bảo mật quá trình tải lên hình ảnh
- Bảo đảm tệp là một hình ảnh
- File size limit
- Bảo vệ chống lại tên tệp độc hại
- Ngăn chặn thực thi mã trong thư mục hình ảnh
- Kết luận
- Làm cách nào để tải tệp lên trong thư mục cụ thể trong PHP?
- Các tệp $ _ trong PHP là gì?
- Tmp_name khi tải lên tệp PHP là gì?
- Làm cách nào để lấy tên tệp đã tải lên trong PHP?
Thiết lập biểu tượng tải lên hình ảnh
Chúng tôi bắt đầu với một hình thức cơ bản
Biểu mẫu chứa các nút gửi và có thuộc tính
Upload
2. Thuộc tính hành động trỏ đến trang mà biểu mẫu sẽ đăng tất cả nội dung của nó lên khi nhấp vào nút gửi
Upload
Biểu mẫu đăng lên một tệp PHP có tên là
Upload
3. Tập tin này sẽ xử lý việc tải lên hình ảnh. Chúng tôi sẽ nhận được điều đó trong một phútĐể cho phép người dùng chọn tệp, chúng tôi thêm trường nhập tệp
Upload
Đồng thời, chúng tôi cũng đã thêm thuộc tính biểu mẫu
Upload
0 and set it to______21. Điều này là cần thiết nếu chúng tôi có trường nhập tệp trong biểu mẫu của mìnhBởi vì chúng tôi chỉ tải lên hình ảnh, chúng tôi bổ sung thuộc tính
Upload
2 vào phần tử đầu vào tệp và đặt nó thành
Upload
3 để yêu cầu nó chỉ chấp nhận các tệp có kiểu bắt chước bắt đầu bằng
Upload
4, như
Upload
5 hoặc
Upload
6Vui lòng viết trình xử lý tải lên hình ảnh PHP tiếp theo
Xử lý tải lên cấu hình PHP
Chúng tôi sẽ tạo một tệp mới có tên là
Upload
3 trong cùng một thư mục với trang chứa biểu mẫu của chúng tôiTiếp theo, chúng tôi tạo một thư mục có tên là
Upload
8, also in the same directory. Đây là nơi tập lệnh của chúng tôi, tôi sẽ lưu trữ các tệp hình ảnh đã tải lên bằng hàm
Upload
9
Upload
1đã được thực hiện. Đây là tất cả những gì cần thiết để làm cho nó hoạt động
Thật không may, không phải tất cả mọi người trên internet đều là một vị thánh. Lệnh của chúng tôi cho phép mọi người tải lên bất kỳ thứ gì, đây là rủi ro bảo mật. Chúng tôi cần đảm bảo mọi người tải lên hình ảnh hợp lệ và không cố làm hại máy chủ của chúng tôi
Bảo mật quá trình tải lên hình ảnh
Chúng tôi sẽ đảm bảo thêm ba điều này theo thứ tự
- Các tập tin cần thiết phải là một hình ảnh
- Tệp phải nhỏ hơn 5MB
- File must have a valid name
Bảo đảm tệp là một hình ảnh
Hãy bắt đầu bằng cách đảm bảo rằng tệp đã tải lên thực sự là một hình ảnh
Use
Upload
10 chúng ta có thể lấy kiểu mô phỏng hình ảnh, hàm trả về
Upload
11 khi tệp không phải là hình ảnh
Upload
4Tiếp theo, chúng tôi cần ngăn người dùng tải lên các tệp rất lớn
File size limit
Trong ví dụ bên dưới, chúng tôi giới hạn kích thước tệp hình ảnh ở mức 5 MB, tất nhiên bạn có thể chọn giới hạn của riêng mình, nhưng ít nhất nên giới hạn nó ở một điểm nhất định để ngăn người dùng tải lên
In the directory of file command
Upload
3, chúng tôi tạo một tệp
Upload
13 và đặt nội dung của nó thành sau
Upload
6
Upload
14 Ngừng yêu cầu vượt quá 5 MB, lưu ý rằng yêu cầu này bao gồm các trường khác nhau trong biểu mẫuBây giờ, hãy đảm bảo rằng người dùng không thể tải lên tệp 0 byte. We used
Upload
15 để đọc kích thước tệp thực tế thay thế vì dựa vào
Upload
16 được báo cáo bởi
Upload
17 vì người dùng có thể sửa đổi
Upload
1Bây giờ hãy chắc chắn tên tệp của hình ảnh hợp lệ
Bảo vệ chống lại tên tệp độc hại
Các tác nhân độc hại có thể thử tải lên một hình ảnh có tên
Upload
18, tập lệnh PHP của chúng tôi hiện sẽ lưu trữ “hình ảnh” này trong
Upload
19 có thể ghi đè lên tệp
Upload
40 của chính chúng tôiChúng tôi có thể cố gắng làm sạch tên tệp hình ảnh, nhưng cách tiếp cận an toàn hơn là tạo tên tệp của riêng chúng tôi
We will make a number
Upload
41 và sử dụng chúng làm tên cho hình ảnh của chúng tôi
Upload
6Bước cuối cùng của chúng tôi là ngăn không cho mã được thực thi trong thư mục
Upload
42 của chúng tôiNgăn chặn thực thi mã trong thư mục hình ảnh
In the directory
Upload
42 của chúng tôi, chúng tôi tạo một tệp ___213 và đặt nội dung của nó thành như sau để ngăn chặn mọi tệp PHP đã tải lên chạyĐiều này chắc chắn rằng mã PHP trong thư mục này sẽ không thực thi. Vì vậy, nếu ai đó vẫn quản lý để tải lên tệp PHP, thì chẳng hạn như tệp PHP bị ngụy trang dưới dạng ảnh, tệp đó vẫn không chạy
Upload
0Quy trình tải tệp lên của chúng tôi hiện đã được bảo mật. 🎉
Kết luận
Chúng tôi đã viết một biểu mẫu cơ bản với phần tử đầu vào, để xử lý việc tải lên, chúng tôi đã tạo một tệp PHP để chuyển hình ảnh đã tải lên một thư mục trên máy chủ. Để đảm bảo quá trình tải lên, chúng tôi đảm bảo rằng tên tệp hợp lệ, kích thước tệp không quá cao và tệp được tải lên thực sự là một hình ảnh
Nếu bạn cũng đang tìm cách bổ sung chức năng chỉnh sửa hình ảnh vào trường tải tệp lên, bạn có thể sử dụng phần tử
Upload
45. Thành phần web do Pintura Hỗ trợ này sẽ tự động mở trình chỉnh sửa hình ảnh mạnh mẽ khi hình ảnh được thêm vào trường và cho phép người dùng của bạn chỉnh sửa hình ảnh trước khi tải lênLàm cách nào để tải tệp lên trong thư mục cụ thể trong PHP?
Tạo Tập lệnh PHP Tệp Tải lên. $ target_file chỉ đường dẫn của tệp sẽ được tải lên. $uploadOk=1 chưa được sử dụng [sẽ được sử dụng sau] $imageFileType giữ phần mở rộng của tệp [viết thường] $target_dir = "uploads/" - chỉ định thư mục chứa tệp . $ target_file chỉ định đường dẫn của tệp sẽ được tải lên. $uploadOk=1 chưa được sử dụng [sẽ được sử dụng sau] $imageFileType giữ phần mở rộng của tệp [viết thường]. $target_file specifies the path of the file to be uploaded. $uploadOk=1 is not used yet [will be used later] $imageFileType holds the file extension of the file [in lower case]
Các tệp $ _ trong PHP là gì?
Biến toàn cục được xác định trước $_FILES là một mảng kết hợp chứa các mục được tải lên qua phương thức HTTP POST . Tải lên một tệp yêu cầu biểu mẫu phương thức HTTP POST với thuộc tính enctype được đặt thành nhiều phần/biểu mẫu dữ liệu.
Tmp_name khi tải lên tệp PHP là gì?
tmp_name is tên tạm thời của tệp đã tải lên do php tạo tự động và được lưu trữ trên thư mục tạm thời trên máy chủ