Проблема с отображением
405
0
давай так напишем (шаблон оставим пока в покое):
<?php if($_POST){ function redirect($url, $message = false){ if ($message){ $_SESSION['message'] = $message; } header('Location: '.$url); exit(); } $abonent = "наш_адрес_мыла"; try{ $subject = (isset($_POST['subject']))?htmlspecialchars(trim($_POST['subject'])):''; $name = (isset($_POST['subject']))?htmlspecialchars(trim($_POST['name'])):''; $mail = (isset($_POST['subject']))?htmlspecialchars(trim($_POST['mail'])):''; $tel = (isset($_POST['subject']))?htmlspecialchars(trim($_POST['tel'])):''; $text = (isset($_POST['subject']))?htmlspecialchars(trim($_POST['text'])):''; if($subject == '') throw new Exception("Вы не ввели тему письма!"); if($name == '') throw new Exception("Вы не ввели ваше имя!"); if($text == '') throw new Exception("Вы не ввели текст письма!"); if(!preg_match('/^\+?[0-9]{7,30}$/', $tel)) throw new Exception("Введите номер телефона правильно!"); $mail = filter_var($mail, FILTER_VALIDATE_EMAIL); if($mail == FALSE) throw new Exception("Введите email!"); $letter="<h3>$subject</h3><br /><h4>$name<br />$mail<br />$tel<br />$text</h4>"; $head = 'MIME-Version: 1.0' . "\r\n"; $head .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $head .= 'From: $name<$mail>' . "\r\n"; if(!mail($abonent, $subject, $letter, $head)) throw new Exception("Произошла ошибка при отправке письма!"); } catch(Exception $ex){ redirect("contact.php?text=".$text, $ex->getMessage());} redirect("contact.php", "Сообщение успешно отправлено!"); }
Изменил: Zдешний (29.04.2014 / 11:06)
0
и в шаблоне заменим
"<?php
$Сообщение = $POST['message'];
if(!empty($Сообщение)){
echo $Сообщение;}
else{
?> "
на
а то увидел, что у тебя $_POST['message'] обрабатывается
Добавлено через 03:06 сек.
неидеально, могут быть ошибки, потому что тут в форме ввода начеркал
"<?php
$Сообщение = $POST['message'];
if(!empty($Сообщение)){
echo $Сообщение;}
else{
?> "
на
<?php if(isset($_SESSION['message'])){ ?> <h1><?=$_SESSION['message']?></h1> <?php unset($_SESSION['message']); } ?> <?php $text = (isset($_GET['text'])):htmlspecialchars(trim($_GET['text'])):'';?>
а то увидел, что у тебя $_POST['message'] обрабатывается
Добавлено через 03:06 сек.
неидеально, могут быть ошибки, потому что тут в форме ввода начеркал
Изменил: Zдешний (29.04.2014 / 11:09)
0
еще подскажите чо за.....
(unexpected '{' in............line 40)
щас код скину
Добавлено через 05:28 сек.
(unexpected '{' in............line 40)
щас код скину
Добавлено через 05:28 сек.
<?php $ОткогоИмя = trim(htmlspecialchars($_POST['from'])); $ОткогоТелефон = trim(htmlspecialchars($_POST['tel'])); $ОткогоПочта = trim(htmlspecialchars($_POST['mail'])); $ТекстСообщения = trim(htmlspecialchars($_POST['text'])); $ТемаПисьма = 'Письмо с сайта 4stolb.ru'; $Кому = 'remont@4stolb.ru'; $Сообщение =" <html> <head> <title>$ТемаПисьма</title> </head> <body> <table> <tr> <td>Имя:</td> <td>$ОткогоИмя</td> </tr> <tr> <td>E-mail:</td> <td>$ОткогоПочта</td> </tr> <tr> <td>Телефон:</td> <td>$ОткогоТелефон</td> </tr> <tr> <td>Сообщение:</td> <td>$ТекстСообщения</td> </tr> </table> "; $Заголовки = "MIME-Version: 1.0\r\n"; $Заголовки .= "Content-type: text/html; charset=utf-8\r\n"; $Заголовки .= "From: 4stolb.ru <robot@4stolb.ru>\r\n"; $ОтправкаПисьма = mail($Кому, $ТемаПисьма,$Сообщение,$Заголовки); if(strlen($ОткогоИмя) > 25) { $Ошибка = "Имя слишком длинное, макс. 25 символов!"; } else {$Ошибка = '';} if(empty($ОткогоИмя) { $Ошибка = "Не введено имя!"; } else {$Ошибка = '';} if(strlen($ТекстСообщения) > 1000 || ($ТекстСообщения) < 50) { $Ошибка = "Текст слишком длинный или короткий, макс. 1000 символов, мин. 50!"; } else {$Ошибка = '';} if(!filter_var("$ОткогоПочта",FILTER_VALIDATE_EMAIL)) { $Ошибка = "Некорректно введен E-mail!"; } else {$Ошибка = '';} if(!preg_match("/^[0-9]{10,10}+$/",$ОткогоТелефон)) { $Ошибка = "Некорректно введен номер телефона!"; } else {$Ошибка = '';} echo $Ошибка; //echo $ОтправкаПисьма; ?>
0
13. DimmoS, в 40 строке не наблюдается {. Переводи текст ошибки. strlen кстати возвращает количество байт, для длины строки используется mb_strlen
0
14. Zдешний, я перевел ошибку, но, 40я строка
Добавлено через 06:27 сек.
вот сам файл, там есть $Ошибка1,$Ошибка2......$Ошибка7
нужно сделать чтобы при true хотябы одной из этих переменных выводилась форма и сообщение об ошибке else аля отправлено
if(empty($ОткогоИмя)){.......}а 39я
if(strlen($ОткогоИмя) > 25){......}если даже значение не введено всё равно ругается...
Добавлено через 06:27 сек.
вот сам файл, там есть $Ошибка1,$Ошибка2......$Ошибка7
нужно сделать чтобы при true хотябы одной из этих переменных выводилась форма и сообщение об ошибке else аля отправлено
0
<?php $ОткогоИмя = trim(htmlspecialchars($_POST['from'])); $ОткогоТелефон = trim(htmlspecialchars($_POST['tel'])); $ОткогоПочта = trim(htmlspecialchars($_POST['mail'])); $ТекстСообщения = htmlspecialchars($_POST['text']); if(empty($ОткогоИмя)){ $Ошибка1 = "Не введено имя, повторите ввод";} if(empty($ОткогоТелефон)){ $Ошибка2 = "Не введен номер телефона, повторите ввод";} if(empty($ТекстСообщения)){ $Ошибка3 = "Не введен текст сообщения, повторите ввод";} if(strlen($ОткогоИмя) > 25) { $Ошибка4 = "Имя не введено либо слишком длинное, макс. 25 символов!";} if(strlen($ТекстСообщения) > 1000 || strlen($ТекстСообщения) < 50) { $Ошибка5 = "Текст слишком длинный или короткий, макс. 1000 символов, мин. 50!";} if(!filter_var($ОткогоПочта,FILTER_VALIDATE_EMAIL)) { $Ошибка6 = "Некорректно введен E-mail";} if(!preg_match("/^[0-9]{10,10}+$/",$ОткогоТелефон)) { $Ошибка7 = "Некорректно введен номер телефона!";} $ТемаПисьма = 'Письмо с сайта 4stolb.ru'; $Кому = 'remont@4stolb.ru'; $Сообщение =" <html> <head> <title>$ТемаПисьма</title> </head> <body> Имя:$ОткогоИмя<br /> E-mail:$ОткогоПочта<br /> Телефон:$ОткогоТелефон<br /> Сообщение:$ТекстСообщения<br /> "; $Заголовки = "MIME-Version: 1.0\r\n"; $Заголовки .= "Content-type: text/html; charset=utf-8\r\n"; $Заголовки .= "From:Robot 4stolb.ru <robot@4stolb.ru>\r\n"; $ОтправкаПисьма = mail($Кому, $ТемаПисьма,$Сообщение,$Заголовки); /*тут эти $Ошибка1-7 если false то продолжаем*/ ob_start(); ?> <form method="post" action="contact.php"> Ваше имя:( мах. 25 симв)<br /> <input type="text" name="from" value="<?= $ОткогоИмя; ?>"><br /> Номер:( 9ХХ ХХХ ХХХХ)<br /> <input type="text" name="tel" value="<?= $ОткогоТелефон; ?>"><br /> Ваш E-mail:<br /> <input type="text" name="mail" value="<?= $ОткогоПочта; ?>"><br /> Текст:( мах. 1000 симв)<br /> <textarea name="text" value="<?= $ТекстСообщения; ?>"></textarea><br /> <input type="submit" name="button" value="Отправить"> <input type="reset" name="button" value="Сбросить"> </form> <? $ФормаСвязи = ob_get_clean(); echo $ФормаСвязи;} else { echo $ОтправкаПисьма; ?>
Изменил: Dmitry Kokorin (08.05.2014 / 12:38)
Для выполнения действия необходимо авторизоваться!