Как прикрепить captcha в оправке сообщения
Добрый день.
После прикрепления капчи в макет с формой обратной связи, перестали отправляться сообщения.
Вот код макета с обратной связью:
<?php
$kernel->show_current_page();
?>
<br/><br/>
<?
function show_form()
{
?>
<?php
$Captcha = new Captcha();
$x1 = $Captcha->GetCaptchaId();
?>
<div class="indent">
<h2>Быстрый заказ</h2>
<form method="post" action="" id="form">
<p><strong>Ваше имя:*</strong><br>
<input value="" name="name" size="25" maxlength="40"/>
<br>
<strong>Телефон:</strong><br>
<input value="" name="tel" size="25" maxlength="40"/>
<br>
<strong>e-mail:*</strong><br>
<input value="" name="email" size="25" maxlength="40"/>
<br>
<strong>Ваше сообщение:*</strong><br>
<textarea value="" cols="50" rows="7" name="mess" onFocus="this.value=''"></textarea>
</p>
<!-- Обработка CAPTCHA -->
<xsl:if test="/document/captcha_key != 0 and /document/site_user_id = 0">
<p>
Контрольные цифры
<sup>
<font color="red">*</font>
</sup>
</p>
<div style="float: left">
<img id="AddRecordCaptcha" style="border: 1px solid #000000" src="/captcha.php?get_captcha={/document/captcha_key}&height=30&width=100" title="Код подтверждения" name="captcha"/>
</div>
<div id="captcha" style="clear:both;">
<img style="border: 0px" src="/hostcmsfiles/images/refresh.gif" /> <a href="javascript:void(0);" onclick="ReNewCaptchaById('AddRecordCaptcha', '{/document/captcha_key}', 30); return false;">Показать другое число</a>
</div>
<div style="float: left;margin-top: 5px">
<input type="hidden" name="captcha_key" value="{/document/captcha_key}"/>
<input type="text" name="captcha_keystring" size="15"/>
</div>
<div id="captcha" style="clear:both;margin-bottom:10px;">
Введите число, которое указано выше.
</div>
</xsl:if>
</div>
<p> <input type="submit" name="Submit" value="Отправить"/></p>
</form>
<?
}
function complete_mail() {
$_POST['title'] = 'Новое письмо для СвязьСервис отправлено: '.date('d-m-Y H:i'
;
$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 10000);
$_POST['name'] = substr(htmlspecialchars(trim($_POST['name'])), 0, 40);
$_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 40);
$_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 60);
$Captcha = new Captcha();
$captcha_result = $Captcha->ValidCaptcha($_POST['captcha_key'], $_POST['captcha_value']);
if ($captcha_result == false)
output_err(3);
if (empty($_POST['name']))
output_err(0);
if(!preg_match("/^([a-z0-9_\.-]+)@([a-z0-9_\.-]+)\.([a-z\.]{2,6})$/", $_POST['email']))
output_err(1);
if(empty($_POST['mess']))
output_err(2);
$mess = '
Имя отправителя:'.$_POST['name'].'
Контактный телефон:'.$_POST['tel'].'
Контактный email:'.$_POST['email'].'
'.$_POST['mess'];
$to = 'eliston@yandex.ru';
$from='atc-spb.ru';
mail($to, $_POST['title'], $mess, "From:".$from);
echo '<div style="margin-top:12px;"><h1>Спасибо! Ваше сообщение отправлено.</h1></div>';
}
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщение.';
$err[3] = 'ОШИБКА! Неправильный код подтверждения.';
echo '<p><font color="#FF0000">'.$err[$num].'</font></p>';
show_form();
exit();
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
</div>
После прикрепления капчи в макет с формой обратной связи, перестали отправляться сообщения.
Вот код макета с обратной связью:
<?php
$kernel->show_current_page();
?>
<br/><br/>
<?
function show_form()
{
?>
<?php
$Captcha = new Captcha();
$x1 = $Captcha->GetCaptchaId();
?>
<div class="indent">
<h2>Быстрый заказ</h2>
<form method="post" action="" id="form">
<p><strong>Ваше имя:*</strong><br>
<input value="" name="name" size="25" maxlength="40"/>
<br>
<strong>Телефон:</strong><br>
<input value="" name="tel" size="25" maxlength="40"/>
<br>
<strong>e-mail:*</strong><br>
<input value="" name="email" size="25" maxlength="40"/>
<br>
<strong>Ваше сообщение:*</strong><br>
<textarea value="" cols="50" rows="7" name="mess" onFocus="this.value=''"></textarea>
</p>
<!-- Обработка CAPTCHA -->
<xsl:if test="/document/captcha_key != 0 and /document/site_user_id = 0">
<p>
Контрольные цифры
<sup>
<font color="red">*</font>
</sup>
</p>
<div style="float: left">
<img id="AddRecordCaptcha" style="border: 1px solid #000000" src="/captcha.php?get_captcha={/document/captcha_key}&height=30&width=100" title="Код подтверждения" name="captcha"/>
</div>
<div id="captcha" style="clear:both;">
<img style="border: 0px" src="/hostcmsfiles/images/refresh.gif" /> <a href="javascript:void(0);" onclick="ReNewCaptchaById('AddRecordCaptcha', '{/document/captcha_key}', 30); return false;">Показать другое число</a>
</div>
<div style="float: left;margin-top: 5px">
<input type="hidden" name="captcha_key" value="{/document/captcha_key}"/>
<input type="text" name="captcha_keystring" size="15"/>
</div>
<div id="captcha" style="clear:both;margin-bottom:10px;">
Введите число, которое указано выше.
</div>
</xsl:if>
</div>
<p> <input type="submit" name="Submit" value="Отправить"/></p>
</form>
<?
}
function complete_mail() {
$_POST['title'] = 'Новое письмо для СвязьСервис отправлено: '.date('d-m-Y H:i'
;$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 10000);
$_POST['name'] = substr(htmlspecialchars(trim($_POST['name'])), 0, 40);
$_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 40);
$_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 60);
$Captcha = new Captcha();
$captcha_result = $Captcha->ValidCaptcha($_POST['captcha_key'], $_POST['captcha_value']);
if ($captcha_result == false)
output_err(3);
if (empty($_POST['name']))
output_err(0);
if(!preg_match("/^([a-z0-9_\.-]+)@([a-z0-9_\.-]+)\.([a-z\.]{2,6})$/", $_POST['email']))
output_err(1);
if(empty($_POST['mess']))
output_err(2);
$mess = '
Имя отправителя:'.$_POST['name'].'
Контактный телефон:'.$_POST['tel'].'
Контактный email:'.$_POST['email'].'
'.$_POST['mess'];
$to = 'eliston@yandex.ru';
$from='atc-spb.ru';
mail($to, $_POST['title'], $mess, "From:".$from);
echo '<div style="margin-top:12px;"><h1>Спасибо! Ваше сообщение отправлено.</h1></div>';
}
function output_err($num)
{
$err[0] = 'ОШИБКА! Не введено имя.';
$err[1] = 'ОШИБКА! Неверно введен e-mail.';
$err[2] = 'ОШИБКА! Не введено сообщение.';
$err[3] = 'ОШИБКА! Неправильный код подтверждения.';
echo '<p><font color="#FF0000">'.$err[$num].'</font></p>';
show_form();
exit();
}
if (!empty($_POST['submit'])) complete_mail();
else show_form();
?>
</div>
Авторизация