Доброго времени суток! Я начинающий в php, прошу Вашей помощи, если не трудно. Ниже код, 16 строка, помогите переписать заново. Код сделан на то, что бы можно было прикреплять в обратной связи несколько файлов. Код: PHP: <?php $to = 'Rayder7235@gmail.com'; if ( isset( $_POST['sendMail'] ) ) { $name = substr( $_POST['name'], 0, 64 ); $tel = substr( $_POST['tel'], 0, 64 ); $email = substr( $_POST['email'], 0, 64 ); $message = substr( $_POST['message'], 0, 250 ); if($_FILES) { $filepath = array(); $filename = array(); $file2 = array(); $i = 0; foreach ($_FILES["file"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $filename[$i][0] = $_FILES["file"]["tmp_name"][$key]; $filename[$i][1] = $_FILES["file"]["name"][$key]; $i++; } } } $body = "Имя:\r\n".$name."\r\n\r\n"; $body .= "Контактный номер:\r\n".$tel."\r\n\r\n"; $body .= "E-mail:\r\n".$email."\r\n\r\n"; $body .= "Жалоба:\r\n".$message; send_mail($to, $body, $email, $filename); } // Вспомогательная функция для отправки почтового сообщения с вложением function send_mail($to, $body, $email, $filename) { $subject = 'Новая жалоба в Scooter-Sale!'; $boundary = "--".md5(uniqid(time())); // генерируем разделитель $headers = "From: ".$email."\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n"; $multipart = "--".$boundary."\r\n"; $multipart .= "Content-type: text/plain; charset=\"utf-8\"\r\n"; $multipart .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n"; $body = $body."\r\n\r\n"; $multipart .= $body; foreach ($filename as $key => $value) { $fp = fopen($value[0], "r"); $content = fread($fp, filesize($value[0])); fclose($fp); $file .= "--".$boundary."\r\n"; $file .= "Content-Type: application/octet-stream\r\n"; $file .= "Content-Transfer-Encoding: base64\r\n"; $file .= "Content-Disposition: attachment; filename=\"".$value[1]."\"\r\n\r\n"; $file .= chunk_split(base64_encode($content))."\r\n"; } $multipart .= $file."--".$boundary."--\r\n"; mail($to, $subject, $multipart, $headers); } /* Отправляем сообщение, используя mail() функцию */ $from = "From: $name <$email> \r\n Reply-To: $email \r\n"; if (mail($to, $subject, $mes, $from)) { header('Refresh: 3; index.html'); echo '<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> <body> <div class="centered">Письмо <b>отправлено</b>, через 3 секунды Вы вернетесь на главную страницу Scooter-Sale</body>';} else { header('Refresh: 5; index.html'); echo '<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> <body>Письмо НЕ отправлено, через 5 секунд Вы вернетесь на главную страницу Scooter-Sale</body>';} ?>
Ошибка в 16 строке, надо подправить. Как - не знаю.. Сама ошибка: Warning: Invalid argument supplied for foreach() in /home/gakwnags/public_html/send.php on line 16
что предаёшь в foreach? отладка/debug http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550 --- Добавлено --- Надо посмотреть что в $_FILES["file"]["error"] может там не массив
Вот сама форма,прикрепляю несколько изображений в самой форме. Письмо на мыло отправляет, а изображения не приходит. Какой код ещё скинуть? Я покажу всё. PHP: <center><form class="contact_form" action="send.php" method="post" id="sendform" enctype="multipart/form-data"> <fieldset> <h3>Форма оформления жалобы Scooter-Sale</h3> <p> <label for="name">Имя:<b><font size="4" color="red">*</b></font></label> <input type="text" name="name" placeholder="Введите Ваше имя" required pattern="^[А-Яа-яЁё]+$"/> <span class="form_hint">Правильный формат "Вячеслав" (только на русском)</span> </p> <p> <label for="tel">Телефон:<b><font size="4" color="red">*</b></font></label> <input type="tel" name="tel" placeholder="Введите номер телефона" required pattern="[0-9]{10}"/> <span class="form_hint">Правильный формат "0931234567" (10 символов)!</span> </p> <p> <label for="email">E-mail:<b><font size="4" color="red">*</b></font></label> <input type="email" name="email" placeholder="Введите электронный адрес" required /> <span class="form_hint">Правильный формат "name@gmail.com"</span> </p> <p> <p> <label for="message">Текст сообщения:<b><font size="4" color="red">*</b></font></label> <textarea name="message" cols="40" rows="6" required ></textarea> </p> <p> <label>Прикрепить файл:</label> <input name="file" value="1" size="40" type="file" multiple /> </p> <p> <button name="sendMail" class="submit" type="submit">Отправить жалобу</button> </p> Обязательные для заполнения поля отмечены <b><font size="4" color="red">*</b></font> </fieldset> </form>
@Rayder7235 почитай про отладку и если по ней не понятно, задавай вопросы что не ясно по ней, как освоишь, сможешь сам ошибки находить. Вот и смотри в $_FILES при отправки, заходит ли в if массив ли $_FILES["file"]["error"]
foreach предназначен для перебора массивов. в ошибке говорится что аргумент не правильный. Это значит, что элемент массива $_FILES["file"]["error"] не является массивом. --- Добавлено --- PHP: var_dump($_FILES);
Что мне нужно сделать? Мне надо что бы оно заработало, помогите мне в этом. Я только начинающий и многого понять не могу