Как отправить форму отзывов на почту + ошибку "Неверно введен e-mail!"?
<?php
require "db.php";
if(isset($_POST['submit'])){
if(trim($_POST['name']) == "" || trim($_POST['email']) == "" || trim($_POST['otziv']) == "")
{
$err = "Заполните все поля!";
}else{
$comments = R::dispense('comments');
$comments->name = $_POST['name'];
$comments->otziv = $_POST['otziv'];
$comments->email = $_POST['email'];
$comments->date = date("d M Y");
$comments->time = date("d.m.Y - H:i");
R::store($comments);
header('location: forma.php');
}
}
?>
Почему не работает?
<?php
require "db.php";
if(isset($_POST['submit'])){
$to = '*******@gmail.com';
$subject = 'Форма с сайта';
$message = "Текст отзыва: " . $_POST['otziv'] . "\nОт: " . $_POST['email'] . " " . $_POST['email'] . "\nВремя: " . date("d.m.Y - H:i");
$headers = array(
'From' => '*******@gmail.com',
'Reply-To' => '*********@gmail.com',
'X-Mailer' => 'PHP/' . phpversion()
);
mail($to, $subject, $message, $headers);
if(trim($_POST['name']) == "" || trim($_POST['email']) == "" || trim($_POST['otziv']) == "")
{
$err = "Заполните все поля!";
}else{
$comments = R::dispense('comments');
$comments->name = $_POST['name'];
$comments->otziv = $_POST['otziv'];
$comments->email = $_POST['email'];
$comments->date = date("d M Y");
$comments->time = date("d.m.Y - H:i");
R::store($comments);
header('location: forma.php');
}
}
?>
Вот форма:
<div class=tab>
<table width=2500px>
<form name="f_add_otziv" action="" method="post">
<tr><td><font face=Helvetica><font size=4px>Ваше ім'я:</font><br></td>
<td><input name="name" type="text" value="" size="60" id="name"></td></tr>
<tr><td height=20px><font size=4px>Ваш e-mail:</font></td>
<td><input name="email" type="text" value="" size="60"></td></tr>
<tr><td height=20px><font size=4px>Повідомлення:</font></td>
<td>
<textarea name="otziv" cols="55" rows="3" wrap="off"></textarea>
</td></tr>
<tr><td height=15px></td></tr>
<tr><td><input type="submit" name="submit" value="Відправити"></td></tr>
<tr><td height=15px><?= '<div style="color:red">'.$err.'</div>' ?></td></tr>
<tr><td height=2px></td></tr>
</form>
</table>
</div>
<?php $commen = mysqli_query($con, "SELECT * FROM `comments` ORDER BY `id` DESC") ?>
<?php while ($com = mysqli_fetch_assoc($commen)){
?>
<hr>
<div class="comment">
<div class="date" title="Опубліковано: <?= $com['time'] ?>"><?= $com['date']?></div>
<br>
<div class="name"><b><?= $com['name'] ?>:</b></div>
Комментарий:<br>
<div class="otziv"><p class="m_bot2"><?= $com['otziv'] ?></p></div>
</div>
<hr>
<?php } ?>
Нужно выяснить какая настройка sendmail на вашем хостинге. Если работаете из локальной среды разработки - отправить не получится.
Для хостинга отправить можно так:
<?php
$to = 'АДРЕС_КУДА_ОТПРАВЛЯТЬ';
$subject = 'Форма с сайта';
$message = "Текст отзыва: " . $_POST['otziv'] . "\nОт: " . $_POST['email'] . " " . $_POST['email'] . "\nВремя: " . date("d.m.Y - H:i");
$headers = array(
'From' => 'ЯЩИК НА СЕРВЕРЕ',
'Reply-To' => 'ЯЩИК НА СЕРВЕРЕ',
'X-Mailer' => 'PHP/' . phpversion()
);
mail($to, $subject, $message, $headers);
?>
Основано на документации к php
Ошибка по поводу почты - вопрос отдельный. Нужно продумать как осуществить возврат проверки email по регулярному выражению. Я бы сделал на основе ajax, но чтобы ответить точно - нужен остальной код и front-части.
Код и регулярное выражение для проверки email:
if (preg_match('/[a-zA-z0-9]+\@[a-zA-z0-9]+\.[a-zA-z0-9]+/is', $_POST['email'])) {
// Почта верна
} else {
// Почта с ошибкой
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Например дано слово appleНужно заменить буквы данного слова на зеркальные:
Нужно написать функцию, которая бы вернула полное имя класса и имя вызывающей функции в процессе выполненияПолное имя класса я получаю, а как...
У меня случается утечка памяти и сервер падает с Out of Memory Error