- Автор темы
- #1
Прикрутил я kcaptcha к форме обратной связи.
Но при вводе неправильного кода, сообщение всё равно отправляется, даже пишет что код введён не верно. Както надо сделать чтобы письмо не отправлялось, если код введён не верно... но вот как?
Кучу форумов просмотрел так и не нашёл ответа.
Заранее спасибо за помощь.
Вот код формы c коментариями:
А вот кусок самой формы (самый низ
Но при вводе неправильного кода, сообщение всё равно отправляется, даже пишет что код введён не верно. Както надо сделать чтобы письмо не отправлялось, если код введён не верно... но вот как?
Кучу форумов просмотрел так и не нашёл ответа.
Заранее спасибо за помощь.
Вот код формы c коментариями:
Код:
<?php
session_start(); # СТАРТ СЕССИИ
error_reporting(0);
require("./config.inc");
require("./header.inc");
# Функции
function formtohtml ($str) {
if (get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
$str = trim($str);
$str = htmlspecialchars ($str, ENT_QUOTES);
$str = str_replace("|", "/", $str);
$str = str_replace("\r", "", $str);
$str = str_replace("\n", "<br>", $str);
$str = eregi_replace("(<br>*){2,}","<br><br>",$str);
$str = eregi_replace("[ ]{2,}", " ", $str);
return $str;
}
function htmltoform ($str) {
$str = str_replace("&", "&", $str);
$str = str_replace(""", "\"", $str);
$str = str_replace("'", "'", $str);
$str = str_replace("<", "<", $str);
$str = str_replace(">", ">", $str);
$str = str_replace("<br>", "\r\n", $str);
return $str;
}
# Отправка сообщения
if (!empty($_GET['a']) and $_GET['a'] == "m") {
$var['fields'] = array("name"=>"Контактное лицо", "email"=>"E-Mail", "subject"=>"Тема", "message"=>"Сообщение", "keystring"=>"Введите код"); # Обязательные поля для заполнения
$notice['error'] = array();
foreach ($var['fields'] as $key => $value) {
if (empty($_POST[$key]) || (($_POST[$key] = formtohtml($_POST[$key])) == "0")) $notice['error'][] = $value;
}
if (empty($notice['error'])) {
if (preg_match("/^([a-z,0-9,_,\-,\.])+\@([a-z,0-9,_,\-])+(\.([a-z,0-9])+)+$/",$_POST['email'])) {
$t['c'] = file($config['recip_f']);
$t['n'] = sizeof($t['c']);
for ($i=0;$i<$t['n'];$i++) {
$t['c'][$i] = explode("|",trim($t['c'][$i]));
}
if (!empty($_POST['recip']) and !empty($t['c'][$_POST['recip']-1])) {
$var['recip_n'] = $t['c'][$_POST['recip']-1][1];
$var['recip_e'] = $t['c'][$_POST['recip']-1][0];
if (function_exists("imap_binary")) {
function mail_convert($str) {
$str = trim(imap_binary(addcslashes($str, "\"!@\\!@(!@)")));
return $str;
}
$var['subj'] = "=?Windows-1251?B?".trim(imap_binary(htmltoform($_POST['subject'])))."?=";
$var['header'] = "From: =?Windows-1251?B?".mail_convert(htmltoform($_POST['name']))."?= <".$_POST['email'].">\r\n";
$var['header'] .= "MIME-Version: 1.0\r\n";
$var['header'] .= "Content-Transfer-Encoding: 8bit\r\n";
$var['header'] .= "Content-Type: text/plain; charset=\"Windows-1251\"\r\n";
$var['header'] .= "X-Mailer: PHP v.".phpversion();
$var['message'] = htmltoform($_POST['message']);
if (!empty($config['features'])) $var['message'] .= "\r\n\r\n
---------------------------------------\r\n
Письмо от: $name \r
На тему: $subject \r
Организация: $org \r
Должность: $dol \r
Телефон: $tel \r
Сайт: $suite \r
Как связаться: $teoemaio \r
Как узнали о нас: $sea $mag $znak $nar $viz $dr \r\n
---------------------------------------\r\n
Код защиты от спама: $keystring \r
IP адрес отправителя: ".$_SERVER['REMOTE_ADDR'];
# Пытаемся послать сообщение
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
echo "Верно";
}else{
echo "Не верно";
}
}
unset($_SESSION['captcha_keystring']);
if (mail("=?Windows-1251?B?".mail_convert(htmltoform($var['recip_n']))."?= <".$var['recip_e'].">",$var['subj'],$var['message'],$var['header'])) {
$notice['ok'] = "Сообщение успешно отправлено";
}
else {
$notice['error'] = "Системная ошибка - сбой функции "mail"";
}
}
else {
$notice['error'] = "Ошибка программы - недоступна функция "imap_binary"";
}
}
else {
$notice['error'] = "Ошибка настоек программы - неверный получатель";
}
}
else {
$notice['error'] = "Пожалуйста, проверьте правильность e-mail";
}
}
else {
$notice['error'] = "Пожалуйста, заполните поля: ".implode(", ",$notice['error']);
}
}
echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\">\r\n";
if (empty($notice['ok'])) {
echo "<form name=\"SM\" method=\"POST\" action=\"".$_SERVER['PHP_SELF']."?a=m\">\r\n";
}
else {
// ПРИ ВОЗНИКНОВЕНИИ ОШИБКИ "METHOD POST NOT ALLOWED" ИЗМЕНИТЬ "POST" на "GET"
echo "<form name=\"GT\" method=\"GET\" action=\"".$config['url_path']."\">\r\n";
}
# Сообщение о завершении / ошибке
if (!empty($notice)) {
echo "<tr><td align=\"center\">";
if (!empty($notice['ok'])) {
echo "<p><b><font color=\"#008000\">".$notice['ok']."!</font></b></p>";
}
elseif (!empty($notice['error'])) {
echo "<p><b><font color=\"#800000\">".$notice['error']."!</font></b></p>";
}
echo "</td></tr>\r\n";
}
# Вывод формы
if (empty($notice['ok'])) {
echo "<tr><td align=\"center\">";
require("./form.inc");
echo "</td></tr>\r\n";
}
echo "<tr><td align=\"center\"><table border=\"0\" cellpadding=\"5\" cellspacing=\"0\"><tr><td>";
# Кнопки
if (empty($notice['ok'])) {
echo "<input type=\"submit\" value=\"Отправить\"></td>\r\n";
echo "<td><input type=\"reset\" value=\"Сбросить\">\r\n";
echo "<td><input type=\"button\" value=\"Назад\" OnClick=\"history.back();\">\r\n";
}
else {
echo "<input type=\"submit\" value=\"".$config['url_name']."\">\r\n";
}
echo "</td></tr></table></td></tr>\r\n";
# Футер
require("./footer.inc");
?>
Код:
....
<tr>
<td align="left"><p class="style4">Сообщение: •</p></td>
<td><textarea class="style3" name="message" rows="6" cols="45"><?php if (!empty($_POST['message'])) echo
htmltoform($_POST['message']); ?></textarea></td>
</tr><tr><td align="left">
<p class="style4">Введите код: •</td>
<td>
<img src="/kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>"><br/>
<input type="text" class="style3" cols="19" name="keystring">
</td>
</tr>
</table>