@USERSGBHH

Не работает прикрепление файла в форме обратной связи. Как исправить?

<form action="send.php" method="POST">
    <p center="justify"><input type="text" name="name" placeholder="Имя *"></p>
    <p center="justify"><input type="tel" name="tel" placeholder="Телефон *" pattern="[0-9]{11}"></p>
	<p><input type="email" name="email" placeholder="Ваш Email *"></p>
	<p><textarea type="comment" name="comment" placeholder="Ваше сообщение *" cols="40" rows="3"></textarea></p>
    <p><input type="file" name="photo[]" multiple="" accept="image/*,image/jpeg"></p>
    <input type="submit" class="btn" >
</form>


<?php

if (isset($_POST['name'])) {
	$name = $_POST['name'];
	if ($name == '') unset($name);
}
if (isset($_POST['tel'])) {
	$tel = $_POST['tel'];
if ($tel == '') unset($tel);	
}
if (isset($_POST['email'])) {
	$email = $_POST['email'];
if ($email == '') unset($email);
}
if (isset($_POST['comment'])) {
	$comment = $_POST['comment'];
if ($comment == '') unset($comment);
}
 
 
if  (isset($name) && isset($email) && isset($comment)) {

$name =  htmlspecialchars(trim($name));
$tel =  htmlspecialchars(trim($tel));
$email =  htmlspecialchars(trim($email));
$comment =  htmlspecialchars(trim($comment));
$photo =  htmlspecialchars(trim($photo));

 /*  Проверяем правильность ввода email-адреса */
  if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i",  $email)){
     echo "Неправильный  формат e-mail адреса!";
  }
  else{

 
 
$addres  = "host@mypocht.ru"; 
$mes = "Тема: Заявка.\nИмя: $name\nТелефон: $tel\nEmail: $email\nСообщение: $comment\nВложение: $photo";
$sub='Заказ'; 
$email='Заказ'; 
$send = mail ($myaddres,$sub,$mes,"Content-type:text/plain; charset=utf-8\r\nFrom:$email");
 
ini_set('short_open_tag', 'On');
header('Refresh: 3; URL=index.html');
/* Отправка  сообщения */

     $verify =  mail ($addres,$sub,$mes,"Content-type:text/plain; charset=utf-8\r\nFrom:$email");
     if  ($verify == 'true'){
        echo  "Сообщение отправлено!";
     }
     else {
        echo  "Сообщение не отправлено!";
     }
  }
}
else{
  echo  "Вы заполнили не все поля!";
}
?>


все работает, текст, номер, сообщение отправляется. Файл вроде как прикрепляется, но он точно не грузиться на хостинг. В письме просто приходит "Вложение: "
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 3
@Asokr
Используйте PHPmailer, так надежней.

Что-то типа такого
$data = $_POST;

if ($data['name']) {
    $message  = '<html><body>';
    $message .= "<table>";
    foreach ($data as $key => $value) {
        $message .= "<tr>";
        $message .= "<td>";
        $message .= "<strong> $key: </strong>";
        $message .= "</td>";
        $message .= "<td style='padding-left:12px;'>";
        $message .= " htmlspecialchars(trim($value))";
        $message .= "</td>";
        $message .= "</tr>";
    }
    $message .= "</table><br><br>";
    $message .= "</body></html>";
    
    require dirname(__DIR__).'/Exception.php';
    require dirname(__DIR__).'/PHPmailer.php';

    $mail = new PHPMailer\PHPMailer\PHPMailer();
    $mail->setFrom('no-reply@example.com', 'Mail title');
    $mail->addAddress('John@mail.ru', 'John Doe');
    $mail->Subject = $subject;
     // Прикрепление файлов
     if (isset($_FILES['photo']) &&
    $_FILES['photo']['error'] == UPLOAD_ERR_OK) {
for($i=0;$i<count($_FILES['photo']['tmp_name']);$i++)
{
    $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['photo']['name'][$i]));
    $filename =$_FILES['photo']['name'][$i];
    if (move_uploaded_file($_FILES['photo']['tmp_name'][$i], $uploadfile)) {
        $mail->addAttachment($uploadfile, $filename);
    }
}
}

    $mail->msgHTML($message);
  
    
    $r = $mail->send();

            
    if ($r) {
        $answer = 'success';
    } else {
        $answer = 'failure';
    }

    die($answer);
}
Ответ написан
@USERSGBHH Автор вопроса
как доработать, чтобы в письме прикреплялась ссылка на файл, которорый человек загрузил. "Вложение: https://toster.ru/img_user/Rg5HyrvB7G_2019.08.05"
Ответ написан
Compolomus
@Compolomus
Комполом-быдлокодер
https://www.php.net/manual/ru/features.file-upload...
Но обработка там на много сложнее
Можете глянуть код, может разберётесь
https://github.com/Compolomus/kmail
Это простая реализация без smtp один класс и не сложный код
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы