Проблема с отображением

Печать RSS
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{
?> "

на


<?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 сек.
неидеально, могут быть ошибки, потому что тут в форме ввода начеркалsmile
Изменил: Zдешний (29.04.2014 / 11:09)
Автор
Оранжевые штаны
0
еще подскажите чо за.....
(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я строка
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)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск