В этой статье мы рассмотрим универсальный скрипт, который можно использовать для отправки форм, содержащих кроме обычных полей – загрузку файлов.
Рассмотрим пример PHP-скрипта:
<?php
if(isset($_POST['submit'])) {
// Получаем данные из формы
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
// Создаем письмо
$to = 'youremail@example.com';
$subject = 'Новое сообщение с сайта';
$headers = 'From: '.$name.' <'.$email.'>' . "\r\n" .
'Reply-To: '.$email . "\r\n" .
'Content-type: text/html; charset=utf-8' . "\r\n";
// Добавляем вложенный файл, если он был загружен
if(isset($_FILES['attachment']) && $_FILES['attachment']['error'] == UPLOAD_ERR_OK) {
$file_name = $_FILES['attachment']['name'];
$file_tmp = $_FILES['attachment']['tmp_name'];
$file_size = $_FILES['attachment']['size'];
$file_type = $_FILES['attachment']['type'];
$file_content = file_get_contents($file_tmp);
$file_encoded = base64_encode($file_content);
$attachment = chunk_split($file_encoded);
$headers .= 'Content-Type: '.$file_type.'; name="'.$file_name.'"' . "\r\n" .
'Content-Transfer-Encoding: base64' . "\r\n" .
'Content-Disposition: attachment; filename="'.$file_name.'"' . "\r\n\r\n";
$message .= '<br><br>Вложение: <a href="data:'.$file_type.';base64,'.$file_encoded.'" download="'.$file_name.'">'.$file_name.'</a>';
}
// Отправляем письмо
$sent = mail($to, $subject, $message, $headers);
// Выводим сообщение об успешной отправке или ошибке
if($sent) {
echo '<p>Сообщение отправлено!</p>';
} else {
echo '<p>Ошибка при отправке сообщения.</p>';
}
}
?>
Обратите внимание на то, что в данном примере используется функция mail() для отправки письма. Однако, для более надежной и безопасной отправки писем, рекомендуется использовать сторонние библиотеки, такие как PHPMailer или SwiftMailer.
И далее для примера рассмотрим HTML-код формы:
<form method="post" enctype="multipart/form-data">
<label for="name">Имя:</label>
<input type="text" name="name" required>
<label for="email">Email:</label>
<input type="email" name="email" required>
<label for="message">Сообщение:</label>
<textarea name="message" required></textarea>
<label for="attachment">Вложение:</label>
<input type="file" name="attachment">
<input type="submit" name="submit" value="Отправить">
</form>