Intereting Posts
Разработка темы для многоязычной установки WordPress Добавить атрибут данных в элемент элемента списка в меню Фильтр / поиск из двух категорий Добавление фотографии каждому пользователю WP Пользовательский тип URL-адреса переписки Могу ли я назначить тему настраиваемому типу сообщений? Добавить мета-бокс, не отображающийся в новой записи – пользовательский мета-ящик не отображается Показывать пользовательский аватар по умолчанию вместо gravatar Почему не работает этот короткий код для youtube? добавить атрибут данных ко всем изображениям внутри the_content () Как получить почтовое имя на пользовательской странице? Измените количество сообщений по умолчанию для показа на мобильной версии Могу ли я использовать register_settings и unregister_setting после загрузки страницы настроек? Сброс соединения при сохранении почты / страницы Повторяемый пакет конфигурации

Как разрешить определенные расширения и размер файла для вложения wp_mail?

Я пытаюсь создать форму с опцией вложения, которая будет отправлена ​​по электронной почте, когда форма будет отправлена ​​на сайт wordpress.

Мои коды работают нормально, и он отправляет электронную почту в формате таблицы HTMKL на мой адрес электронной почты. Также я могу отправить вложение с помощью кодов. Проблема возникает, когда я рассматриваю расширения файлов вложений и размер файла. Я не знаю, как ограничить большой размер файлов и устанавливать вложения только для некоторых разрешенных расширений.

Мой код:

<?php //Setup an empty array. $errors = array(); if($_POST["submit"]) { $to = "myemail@gmail.com"; $subject = "New reservations request"; $hotel = $_POST["hotel_url"]; $sender = $_POST["sendername"]; $senderEmail = $_POST["senderEmail"]; //Check the name and make sure that it isn't a blank/empty string. if(empty($sender)){ //Blank string, add error to $errors array. $errors['sendername'] = "Please enter your name!"; } /* attachment */ move_uploaded_file($_FILES["attachment"]["tmp_name"],WP_CONTENT_DIR .'/uploads/'.basename($_FILES['attachment']['name'])); $attachments = array(WP_CONTENT_DIR ."/uploads/".$_FILES["attachment"]["name"]); if(empty($errors)){ $mailBody = "<table border='1'> <tr> <th>No</td> <th>Item</td> <th>Description</td> </tr> <tr> <td>01</td> <td>Hotel</td> <td>$hotel</td> </tr> <tr> <td>02</td> <td>Name</td> <td>$sender</td> </tr> <tr> <td>03</td> <td>E-Mail</td> <td>$senderEmail</td> </tr> </table>"; $headers = array('From: '.$_POST['sendername'].' <'.$_POST['senderEmail'].'>'); $mail_sent = wp_mail( $to, $subject, $mailBody, $headers, $attachments ); } } if ($mail_sent) { ?> <p>Request sent</p> <?php } else { ?> <form id="" name="" action="<?php echo get_permalink(); ?>" method="post" enctype="multipart/form-data"> <input type="hidden" name="hotel_url" value="<?php echo get_permalink();?>" /> <div class="section-heading"><h6>Your Details</h6></div> <div class="label-input-wrapper"> <div class="form-label">Name</div> <div class="form-input"> <input type="text" name="sendername"/> <?php if(isset($errors['sendername'])) { echo '<span style="color: red">'.$errors['sendername'].'</span>'; } ?> </div> </div> <div class="label-input-wrapper"> <div class="form-label">E-Mail</div> <div class="form-input"> <input type="email" name="senderEmail" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[az]{2,4}$" required value="<?PHP if(!empty($errors)) { echo $senderEmail;} ?>"/> </div> </div> <label for='uploaded_file'>Select A File To Upload:</label> <input type="file" name="attachment"> <input type="submit" value="Submit" name="submit"> </form> <?php } ?> 

Вышеприведенный код отправляет вложение в мою почту, и он сохраняет файл в моей загрузке dirctory. Я знаю, что мне нужно что-то сделать в этой области / * вложения * /, чтобы разрешить определенные расширения и размер файла. но как это сделать? например: если мне нужно разрешить только .png, .jpg, .pdf и максимальный файл – 1mb, как я могу это сделать? где и какой код я должен внести в вышеуказанные коды?

Добавьте еще одно условие перед возможностью загрузки файлов –

 $allowedExts = array("pdf", "jpg", "png"); $temp = explode(".", $_FILES["attachment"]["name"]); $extension = end($temp); if ((($_FILES["file"]["type"] == "image/pdf") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 1000000) && in_array($extension, $allowedExts)) { //your file upload code and other stuffs } else { echo "Invalid file"; } 

См. http://www.w3schools.com/php/php_file_upload.asp

См. Раздел «Ограничения при загрузке».