Здравствуйте,есть такой код:
<!-- Contact Form -->
<form id="contact" method="POST" onsubmit="this.action=window.location.href+'#contact';this.submit()">
<p>Введіть своє ім'я:<br>
<input type="text" name="name"></p>
<p>Введіть свій email:<br>
<input type="text" name="email"></p>
<p>Введіть текст повідомлення:<br>
<textarea name="message" cols="40" rows="5" ></textarea>
</p>
<p>Введіть цифри: <br>
<?php
$i=1;
do
{
$num[$i] = mt_rand(0,9);
echo "<img src='img/".$num[$i].".gif' border='0' align='bottom' vspace='5px'>";
$i++;
}
while ($i<5);
$captcha = $num[1].$num[2].$num[3].$num[4];
?>
<input name="captcha" type="hidden" value="<?php echo $captcha ;?>">
<input name="pr" style=" margin-bottom:11px" type="text" size="6" maxlength="4"></p>
<p><input type="submit" class="bt1" value="Відправити повідомлення"></p>
<?php
/* Проверяем существуют ли переменные, которые передала форма обратной связи.
Если не существуют, то мы их создаем.
Если форма передала пустые значения мы их удаляем */
if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
if (isset($_POST['message'])) {$message = $_POST['message']; if ($message == '') {unset($message);}}
if (isset($_POST['pr'])){$pr = $_POST['pr']; if ($pr == '') {unset($pr);}}
if (isset($_POST['captcha'])){$captcha = $_POST['captcha'];}
/* Проверяем заполнены ли все поля */
if (isset($name) && isset($email) && isset($message) && isset($pr))
{
/* Убираем все лишние пробелы, а также преобразуем все теги HTML в символы*/
$name = htmlspecialchars(trim($name));
$email = htmlspecialchars(trim($email));
$message = htmlspecialchars(trim($message));
/* Проверяем правильность ввода email-адреса */
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
{
echo "<p>Невірний формат e-mail адреси!</p>";
}
/* Проверяем правильность ввода капчи */
if ($captcha == $pr)
{
/* Формируем сообщение */
$address = "my@gmail.com";
$sub = "Повідомлення з site.ru";
$mes = "Автор: $name \nE-mail відправника: $email \nТекст листа: \n$message";
/* Отправка сообщения */
$verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");
if ($verify == 'true')
{
echo "Дякуємо! Ваше повідомлення відправлено";
}
else
{
echo "Ваше повідомлення не відправлено!";
}
}
else
{
echo "Ви не вірно ввели числа";
}
}
else
?>
Но,его недостаток в том,что он отправляет сообщение даже если email указан без @ как это исправить ?
Т.к. у Вас сейчас при даже неверном email скрипт благополучно работает дальше, вам надо изменить следующее:
UPD: Лучше использовать filter_var()
.
/* Проверяем правильность ввода email-адреса */
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
// Тут либо завершайте скрипт, либо делайте else и туда суйте следующий код.
} else {
// А тут надо остальное ...
}
P.S. Не стоит использовать это регулярное выражение =)
Результат:
<!-- Contact Form -->
<form id="contact" method="POST" onsubmit="this.action=window.location.href+'#contact';this.submit()">
<p>Введіть своє ім'я:<br>
<input type="text" name="name"></p>
<p>Введіть свій email:<br>
<input type="text" name="email"></p>
<p>Введіть текст повідомлення:<br>
<textarea name="message" cols="40" rows="5"></textarea>
</p>
<p>Введіть цифри: <br>
<?php
$i = 1;
do {
$num[$i] = mt_rand(0, 9);
echo "<img src='img/" . $num[$i] . ".gif' border='0' align='bottom' vspace='5px'>";
$i++;
} while ($i < 5);
$captcha = $num[1] . $num[2] . $num[3] . $num[4];
?>
<input name="captcha" type="hidden" value="<?php
echo $captcha;
?>">
<input name="pr" style=" margin-bottom:11px" type="text" size="6" maxlength="4"></p>
<p><input type="submit" class="bt1" value="Відправити повідомлення"></p>
<?php
/* Проверяем существуют ли переменные, которые передала форма обратной связи.
Если не существуют, то мы их создаем.
Если форма передала пустые значения мы их удаляем */
if (isset($_POST['name'])) {
$name = $_POST['name'];
if ($name == '') {
unset($name);
}
}
if (isset($_POST['email'])) {
$email = $_POST['email'];
if ($email == '') {
unset($email);
}
}
if (isset($_POST['message'])) {
$message = $_POST['message'];
if ($message == '') {
unset($message);
}
}
if (isset($_POST['pr'])) {
$pr = $_POST['pr'];
if ($pr == '') {
unset($pr);
}
}
if (isset($_POST['captcha'])) {
$captcha = $_POST['captcha'];
}
/* Проверяем заполнены ли все поля */
if (isset($name) && isset($email) && isset($message) && isset($pr)) {
/* Убираем все лишние пробелы, а также преобразуем все теги HTML в символы*/
$name = htmlspecialchars(trim($name));
$email = htmlspecialchars(trim($email));
$message = htmlspecialchars(trim($message));
/* Проверяем правильность ввода email-адреса */
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "<p>Невірний формат e-mail адреси!</p>";
} else {
// ADDED ELSE
/* Проверяем правильность ввода капчи */
if ($captcha == $pr) {
/* Формируем сообщение */
$address = "my@gmail.com";
$sub = "Повідомлення з site.ru";
$mes = "Автор: $name \nE-mail відправника: $email \nТекст листа: \n$message";
/* Отправка сообщения */
$verify = mail($address, $sub, $mes, "Content-type:text/plain; charset = utf-8\r\nFrom:$email");
if ($verify == 'true') {
echo "Дякуємо! Ваше повідомлення відправлено";
} else {
echo "Ваше повідомлення не відправлено!";
}
} else {
echo "Ви не вірно ввели числа";
}
}
}
?>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется код на C++ (бибилиотека gtkmm)mainBox наполняется обьектами типа Gtk::Label
Можно ли два класса одновременно связать путем агрегации и наследования?
Задача Нужно чтобы был в файлике был список студентов и производить с ними операции добавлять студентов удалять и тпНе знаю как лучше сделать...
Передо мной постала простая задача в заданой строке вставить некоторое количество пробелов между словами чтобы длина строки была 60 символовНо...