Ребят помогите отредактировать до конца код! Вроде все работает, только на почтовый ящик не приходит уведомление, что сообщение было отправлено с сайта, а в этом сообщении список блюд под заказ. Вот код PHP: <?php $orders = array( 'order1'=>'Ролл1', 'order2'=>'Ролл2' ); if (isset($_POST['name1'])) {$name1 = $_POST['name1'];} if (isset($_POST['phone'])) {$phone = $_POST['phone'];} if (isset($_POST['adress'])) {$adress = $_POST['adress'];} if (empty($name1)) { echo "<b class=style5>Не указано имя!<p>"; echo "<a href=order.htm class=style5>Вернуться к заполнению формы заказа</a>"; exit; } if (empty($phone)) { echo "<b class=style5>Не указан телефон!<p>"; echo "<a href=order.htm class=style5>Вернуться к заполнению формы заказа</a>"; exit; } if (empty($adress)) { echo "<b class=style5>Не указан адрес!<p>"; echo "<a href=order.htm class=style5>Вернуться к заполнению формы заказа</a>"; exit; } else echo "<font class=style5>Получен заказ от: </font>".$_POST["name1"]; echo "<br><br><font class=style5>Контактный телефон: </font>".$_POST["phone"]; echo "<br><br><font class=style5>Адрес: </font>".$_POST["adress"]; echo "<br><br><font class=style5>Время доставки: </font>".$_POST["time"]; $order=''; foreach($orders as $id=>$title){ if(isset($_POST[$id])) $orders.="\n{$title}"; } if(isset($_POST['order1'])) echo "<br><br><font class=style5>Ролл1</font>"; if(isset($_POST['order2'])) echo "<br><br><font class=style5>Ролл2</font>"; if($_POST['submit']) { // $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменной $_POST['mess'] все аналогично $name1 = htmlspecialchars(substr(trim($_POST['name1'])), 0, 100); $phone = htmlspecialchars(substr(trim($_POST['phone'])), 0, 100); $adress = htmlspecialchars(substr(trim($_POST['adress'])), 0, 1000); $to = "kaylanger@mail.ru"; /*УКАЗАТЬ СВОЙ АДРЕС!*/ $from = "mail@kompot-cafe.ru"; $subject = "Сообщение с вашего сайта"; $message = "Имя пославшего: $name1 \nТелефон: $phone \nАдрес:: $adress\nМеню Заказа:: $order"; $verify = mail($to, $from, $subject, $message, "From: $from Reply-To: $from Content-Type: text/plain; charset=windows-1251 Content-Transfer-Encoding: 8bit" ); } if ($verify = true) { echo "<b class=style5><br><br>Спасибо! Скоро Вам перезвонят для подтверждения заказа.<p>"; echo "<a href=index.htm class=style5>Нажмите,</a> чтобы вернуться на главную страницу"; } else { echo "<br><br><font class=style5>Ошибка. Сообщение не отправлено!"; } ?> вот форма заполнения HTML: <form action="action.php" method="post" id="form1"> <label><input type="checkbox" name="order1" value="roll1"><img src="images/logo_mess.png">ролл1</label> <label><input type="checkbox" name="order2" value="roll2"><img src="images/logo_mess.png">ролл2<br><br></label> <label>Фамилия Имя Отчество<br><input type="text" name="name1" size="55"><br><font class="style1">Пример: Иванов Иван Иванович</font></label><br><br> <label>Контактный телефон<br><input type="text" name="phone" size="55"><br> <font class="style1">Пример: 8-987-654-32-10 </font></label><br><br> Время доставки:<br> <select name="time"> <option value="10.00-11.00">10.00-11.00</option> <option value="11.00-12.00">11.00-12.00</option> <option value="12.00-13.00">12.00-13.00</option> <option value="13.00-14.00">13.00-14.00</option> <option value="14.00-15.00">14.00-15.00</option> <option value="15.00-16.00">15.00-16.00</option> <option value="16.00-17.00">16.00-17.00</option> <option value="17.00-18.00">17.00-18.00</option> <option value="18.00-19.00">18.00-19.00</option> <option value="19.00-20.00">19.00-20.00</option> <option value="20.00-21.00">20.00-21.00</option> <option value="21.00-22.00">21.00-22.00</option> <option value="22.00-23.00">22.00-23.00</option> </select><br><font class="style1">Выбирите удобное для Вас время доставки</font><br><br> <label>Адрес доставки:<br><textarea name="adress" cols="50" rows="4"></textarea><br><font class="style1">Пример: ул. Советская, д.1, кв.1 </font></label><br><br> <label><input type="reset" name="reset1" value="Очистить форму"></label> <label><input type="submit" name="submit1" value="ПОДТВЕРДИТЬ ЗАКАЗ"></label> </form> Помогите, кто чем может!
Спасибо! но не помогло. Выдает "Сообщение не отправлено". Специалисты с хостинг компании (на котором лежит сайт) сказали , что ошибка возможно до функции mail(). Подскажите, может вы видите ее.
Заголовки для функции mail посмотрите, есть подозрение, что не хватает символов возврата каретки \r\n в конце строк, пример можно посмотреть здесь http://php.net/manual/en/function.mail.html
меня смущает $name1 = htmlspecialchars(substr(trim($_POST['name1'])), 0, 100); $phone = htmlspecialchars(substr(trim($_POST['phone'])), 0, 100); $adress = htmlspecialchars(substr(trim($_POST['adress'])), 0, 1000); наверное имелось ввиду $name1 = htmlspecialchars(substr(trim($_POST['name1']), 0, 100)); $phone = htmlspecialchars(substr(trim($_POST['phone']), 0, 100)); $adress = htmlspecialchars(substr(trim($_POST['adress']), 0, 1000)); ?
разница в том, какой функции передаются аргументы 0 и 100 у автора функция htmlspecialchars принимает аргументы: substr(), 0 и 100 соотвественно. Но согласно документации: то есть автор пытается передать в качестве строки функцию substr() - здесь все нормально, но затем в качестве флага - "0" и в качестве кодировки - "100" - что не есть правильно. PHP: $name1 = htmlspecialchars( substr( trim( $_POST['name1'] ) ), 0, 100 ); функция substr, в свою очередь, может принимать эти аргументы то есть если задумка автора такова, что обрезанная от пробелов (trim) переменная ($_POST['name1']) обрезается до 100 символов (substr) и фильтруется (htmlspecialchars), то правильно будет написать так: PHP: $name1 = htmlspecialchars( substr( trim( $_POST['name1'] ), 0, 100 ) );