[CODE]<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
// подключил капчу
<?include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");
$cpt = new CCaptcha();
$captchaPass = COption::GetOptionS tring("main", "captcha_password", "");
if(strlen($captchaPass) <= 0)
{
$captchaPass = randS tring(10);
COption::SetOptionS tring("main", "captcha_password", $captchaPass);
}
$cpt->SetCodeCrypt($captchaPass);
?>
<?
if (isset($submit)) {
echo 'сабмит прошел...<br>';
echo $cap.'<br>';
if (!$GLOBALS["APPLICATION"]->CaptchaCheckCode($cap, $captcha_sid))
{
$error=true;
echo 'error captcha<br>';
}
}
?>
<div class="wizard">
<fo rm method="post" action="<?=POST_FORM_ACTION_URI?>" name="wizard">
<input type=hidden name=LAST_SECTION_ID value="<?=$arResult['LAST_SECTION_ID']?>">
<input type=hidden name=CURRENT_STEP value="<?=$arResult['CURRENT_STEP']?>">
<?
if ($arResult['ERROR'])
echo '<div><font class=wizard_errortext>'.$arResult['ERROR'].'</font></div>';
elseif($arResult['MESSAGE'])
echo '<div><font class=wizard_oktext>'.$arResult['MESSAGE'].'</font></div>';
?>
<table cellspacing=0 cellpadding=0 border=0 width=100%>
<tr>
<td height=70 width=1 align=left valign=top st yle="border-left: 1px solid rgb(190, 192, 207); border-top: 1px solid rgb(190, 192, 207);"></td>
<td align=left valign=middle st yle="border-top: 1px solid rgb(190, 192, 207);">
<div class=wizard_title><?=GetMessage("GP_WZ_TITLE")?></div>
</td>
<td width=1 align=right valign=top st yle="border-right: 1px solid rgb(190, 192, 207); border-top: 1px solid rgb(190, 192, 207);"></td>
</tr>
<?
?>
<?if ($arResult['TOP_MESSAGE'] && false):?>
<tr>
<td style="border-left:1px solid #BEC0CF"><img src="/bitrix/images/1.gif" width=6 height=1></td>
<td valign=bottom><div class=wizard_step><?=$arResult['TOP_MESSAGE']?></div></td>
<td style="border-right:1px solid #BEC0CF"><img src="/bitrix/images/1.gif" width=6 height=1></td>
</tr>
<?endif;?>
<tr>
<td style="border-left:1px solid #BEC0CF"><img src="/bitrix/images/1.gif" width=6 height=1></td>
<td ><hr size=1 style="background-color:#CCCCCC;height:1px;border: medium none;color:#CCCCCC;"></td>
<td style="border-right:1px solid #BEC0CF"><img src="/bitrix/images/1.gif" width=6 height=1></td>
</tr>
<tr>
<td style="border-left:1px solid #BEC0CF"><img src="/bitrix/images/1.gif" width=6 height=1></td>
<td align=center>
<table cellspacing=0 cellpadding=8 border=0>
<?
if (count($arResult['SECTIONS']))
{
echo '<tr><td>';
foreach($arResult['SECTIONS'] as $f)
{
$id = $f['ID'];
echo "<div class=wizard_sections><input type=radio name=SECTION_ID value='$id' id='section_$id'> <label for='section_$id'><font class=text>".$f['NAME']."</font></label></div>";
}
echo '</td></tr>';
}
if (count($arResult['FIELDS']))
{//print_r($arResult['FIELDS']);
$check_fields = array();
$check_fields_names = array();
$check_email_fields = array();
$check_email_fields_names = array();
$check_phone_fields = array();
$check_phone_fields_names = array();
$i=0;
foreach($arResult['FIELDS'] as $num=>$f)
{
//echo "<span st yle='text-align:left; width:100%;'><pre>".print_r($f,true)."</pre></span>";
if (trim($f['DETAIL_TEXT']))
{
$i++;
$link = ' <a href="#note'.$i.'"><sup>'.$i.'</sup></a>';
$arHelp[$i] = $f['DETAIL_TEXT'];
}
else
$link = '';
$id = $f['FIELD_ID'];
//echo '"'.$f['CODE'].'"<br />';
if ($f['CODE']=='email') { //echo 'Add e-mail<br />';
$check_email_fields[]='chk_'.$id;
$check_email_fields_names[] = $f['NAME'];
}
if ($f['CODE']=='phone') { //echo 'Add phone<br />';
$check_phone_fields[]='chk_'.$id;
$check_phone_fields_names[] = $f['NAME'];
}
$id_extra = 'chk_'.$id;
if ($f['FIELD_NEED']=='yes') {
$check_fields_names[]=$f['NAME'];
$f['NAME'].='<span style="color:red;">*</span>';
$check_fields[]=$id_extra;
}
$id_extra=" id='$id_extra' ";
echo '<tr>
<td valign=top align=left>';
if ($f['FIELD_TYPE']=='text') // simple input field
echo '<div class="wizard_field_name">' . $f['NAME'] . ':</div>' .
'<input '.$id_extra.' name="wizard['.$id.']" size=61 value="'.$f['FIELD_VALUE'].'">' .
'<br><font class=smalltext>' . $f['PREVIEW_TEXT'] . $link . '</font>';
elseif ($f['FIELD_TYPE']=='checkbox') // checkbox
echo '<div class="wizard_field_name"><input type=checkbox value="'.GetMessage('WZ_YES').'" name="wizard['.$id.']" '.($f['FIELD_VALUE']?'checked':'').' id="'.$id.'">' .
'<label for="'.$id.'"><b>' . $f['NAME'] . '</b></label></div>' .
'<font class=smalltext>' . $f['PREVIEW_TEXT'] . $link . '</font>';
elseif ($f['FIELD_TYPE']=='select') // select box
{
echo '<div class="wizard_field_name">' . $f['NAME'] . ':</div>' .
'<select name="wizard['.$id.']">';
foreach($f['FIELD_VALUES'] as $v)
echo '<option value="'.$v.'" '.($f['FIELD_VALUE']==$v?'selected':'').'>'.$v.'</option>';
echo ' </select>' .
'<br><font class=smalltext>' . $f['PREVIEW_TEXT'] . $link . '</font>';
}
elseif ($f['FIELD_TYPE']=='radio') // radio box
{
echo '<div class="wizard_field_name">' . $f['NAME'] . ':</div>' .
'<table cellspacing=2 cellpadding=0 border=0>';
foreach($f['FIELD_VALUES'] as $k=>$v)
echo '<tr><td align=left><input type=radio name="wizard['.$id.']" value="'.$v.'" '.($f['FIELD_VALUE']==$v?'checked':'').' id="'.$id.'_'.$k.'"><label for="'.$id.'_'.$k.'"> '.$v.'</label></td></tr>';
echo '</table><font class=smalltext>' . $f['PREVIEW_TEXT'] . $link . '</font>';
}
elseif ($f['FIELD_TYPE']=='multitext') // input options
{
echo '<div class="wizard_field_name">' . $f['NAME'] . ':</div>' .
'<table cellspacing=2 cellpadding=0 border=0>';
foreach($f['FIELD_VALUES'] as $k=>$v)
echo '<tr><td align=right>'.$v.':</td><td><input name="wizard['.$id.']['.$k.']" value="'.($f['FIELD_VALUE'][$k]).'"></td></tr>';
echo '</table><font class=smalltext>' . $f['PREVIEW_TEXT'] . $link . '</font>';
}
else { // textarea, default
$row_count = 6;
if ($f['FIELD_VALUES']) {
reset($f['FIELD_VALUES']);
$row_count = current($f['FIELD_VALUES']);
$row_count = is_numeric($row_count) ? $row_count : 6;
}
echo '<div class="wizard_field_name">' . $f['NAME'] . ':</div>' .
'<textarea '.$id_extra.' name="wizard['.$id.']" rows='.$row_count.' cols=61>'.$f['FIELD_VALUE'].'</textarea>' .
'<br><font class=smalltext>' . $f['PREVIEW_TEXT'] . $link . '</font>';
}
echo ' </td>
</tr>';
unset($arResult['FIELDS'][$field_num]['FIELD_VALUE']);
}
}
?>
</table>
//вставил в форму
<input name="captcha_code" value="<?=htmlspecialchars($cpt->GetCodeCrypt());?>" type="hidden">
<input id="captcha_word" name="captcha_word" type="text">
<img src="/bitrix/tools/captcha.php?captcha_code=<?=htmlspecialchars($cpt->GetCodeCrypt());?>">
<sc ript type="text/javascript">
function TrimS tring(sInString){
sInString = sInString.r eplace(/ /g,' ');
return sInString.r eplace(/(^\s+)|(\s+$)/g, "");
}
function check_and_submit() {
var rez="";
var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
var reg2 = /^([0-9\-\(\)\+ ])+$/;
<?
foreach ($check_fields as $k=>$cfld) {
?>
if (TrimS tring(docu ment.getElementById("<?=$cfld?>").value)=="") rez = rez + "Не заполнено поле '<?=$check_fields_names[$k]?>'\r\n";
<?
}
foreach ($check_email_fields as $k=>$cfld) {
?>
if (reg.test(TrimS tring(docu ment.getElementById("<?=$cfld?>").value)) == false) rez = rez + "Неверный e-mail в поле '<?=$check_email_fields_names[$k]?>'\r\n";
<?
}
foreach ($check_phone_fields as $k=>$cfld) {
?>
if (TrimS tring(docu ment.getElementById("<?=$cfld?>").value)) {
if (reg2.test(TrimS tring(docu ment.getElementById("<?=$cfld?>").value)) == false) rez = rez + "Неверный телефон в поле '<?=$check_phone_fields_names[$k]?>'\r\n";
}
<?
}
?>
return rez;
}
</sc ript>
</td>
<td style="border-right:1px solid #BEC0CF"><img src="/bitrix/images/1.gif" width=6 height=1></td>
</tr>
<tr>
<td style="border-left:1px solid #BEC0CF"><img src="/bitrix/images/1.gif" width=6 height=1></td>
<td>
<p align=right style="padding-right:15px;padding-top:15px">
<? if (count($arResult['SECTIONS'])) { ?>
<? if ($arResult['CURRENT_STEP']>1) { ?>
<!-- <input type=image src="<?=$templateFolder?>/images/button_back.gif" name="back"> -->
<? } elseif ($arParams['BACK_URL']) {?>
<input type=image src="<?=$templateFolder?>/images/button_back.gif" on click="jav * ascript:wind ow .location='<?=$arParams['BACK_URL']?>';return false;">
<? } ?>
<img src="/bitrix/images/1.gif" width=1 height=1>
<input type=image src="<?=$templateFolder?>/images/button_next.gif" name="next">
<? } else { // Finish ?>
<sc ript>
function Goto(url)
{
var wizard = docu ment.forms.wizard;
wizard.action=url;
rez=check_and_submit();
if (rez=="") {
wizard.submit();
} else {
a lert(rez);
return false;
}
}
</sc ript>
<!-- <input type=image src="<?=$templateFolder?>/images/button_back.gif" name="back"> -->
<input type="hidden" name="do_post" value="1">
<img src="/bitrix/images/1.gif" width=1 height=1>
<img class="image_button" src="<?=$templateFolder?>/images/button_done.gif" name="wizard" on click="Goto('<?=$arParams['NEXT_URL']?>')"/>
<? } ?>
</p>
</td>
<td style="border-right:1px solid #BEC0CF"><img src="/bitrix/images/1.gif" width=6 height=1></td>
</tr>
<tr>
<td class="wizard_footer_left" ></td>
<td class="wizard_footer"></td>
<td class="wizard_footer_right"></td>
</tr>
</table>
<?
if (count($arResult['HIDDEN']))
{
foreach($arResult['HIDDEN'] as $k=>$v)
{
if (is_array($v))
foreach($v as $k1=>$v1)
echo '<input type=hidden name="wizard['.$k.']['.$k1.']" value="'.$v1.'">';
else
echo '<input type=hidden name="wizard['.$k.']" value="'.$v.'">';
}
}
?>
</form>
<?
// Help
if (count($arHelp))
{
?>
<br>
<table cellspacing=4 cellpadding=2 style="background-color:#FFFFEF;border:1px solid #d7d7be;" width="100%">
<?
foreach($arHelp as $i=>$help)
echo '<tr><td valign=top><font class=smalltext><b>'.$i.'.</b></font></td><td><font class=smalltext><a name="note'.$i.'"></a> ' . $help . '</font></td></tr>';
?>
</table>
<?
}
?>
</div>
<?//echo '<pre>';print_r($arResult);echo '</pre>';?>
[/CODE]
куда прописать
[CODE] <?
if(!$APPLICATION->CaptchaCheckCode($_POST["captcha_word"], $_POST["captcha_code"]))
{
// Неправильное значение
}
else
{
// Правильное значение
}
?>[/CODE]чтобы форма работала корректно и выводилось сообщение об неверности заполнения капчи