| | Ребята помогите пожалуйста. Я не программист. Есть форма обратной связи, работала, потом почему-то перестала. При заполнении формы пишет следующее "'Произошла внутренняя ошибка сервера. Повторите позже или позвоните нам по телефону: (111) 1111-111" Знакомый (жадный) программист сказал что "защита от ботов поломалась" и ещё про эту защиту сказал что там без участия пользователя генерируется код в браузере и отправляется. Я так понял что это должно быть не сложно? Вот код:
PHP код: <?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Обратная связь");
$thankyou = FALSE;
if(isset($_POST['name'])) {
if (empty($_REQUEST['special_check']) || ($_SESSION['special'][$_REQUEST['special_check']] != 'check'))
{
$error[] = 'Произошла внутренняя ошибка сервера. Повторите позже или позвоните нам по телефону: (111) 1111-111 ';
unset($_SESSION['special']);
}
elseif(empty($_POST['name'])||empty($_POST['message'])||empty($_POST['email'])) {
$error[] = 'Не заполнены обязательные поля.';
}
else {
$body = "На сайте www.site.ru заполнена форма обратной связи. \n";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/plain; charset=cp1251 '."\r\n";
$headers .= 'From: noreply@site.ru '."\r\n";
$to = 'hh@live.ru';
$subject = "Заполнена форма обратной связи";
$body .= "Имя: ".strip_tags($_POST['name'])."\n";
$body .= 'E-mail: '.strip_tags($_POST['email'])."\n";
if(!empty($_POST['phone'])) $body .= 'Номер телефона: '.strip_tags($_POST['phone'])."\n";
$body .= 'Сообщение: '.strip_tags($_POST['message'])."\n";
if(is_array($_POST['connect'])) $body .= 'Предпочтительный способ связи: '.(($_POST['connect']['phone']==TRUE)?'по телефону ':'').(($_POST['connect']['email']==TRUE)?'по электронной почте':'')."\n";
//$subject = mb_convert_encoding($subject,'CP1251');
//$body = mb_convert_encoding($body,'Windows-1251','utf-8');
mail($to, $subject, $body, $headers) or $error = array('src'=>'write','0'=>'Ошибка при отправке письма');
$thankyou = 'Заявка успешно отправлена!';
}
}
?>
<h2>Обратная связь</h2>
<?
if(!isset($_SESSION['referer'])) $_SESSION['referer'] = $_SERVER['HTTP_REFERER'];
elseif($_SERVER['HTTP_REFERER'] != 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'])$_SESSION['referer'] = $_SERVER['HTTP_REFERER'];
?> <? if($thankyou):?>
<script>
alert('<?=$thankyou?>');
window.location.href = '<?=$_SESSION['referer']?>';
</script>
<? unset($_POST);?>
<? elseif($error):?>
<script>
alert('Ошибка при обработке формы:\n <?=implode("<br />",$error)?>');
</script>
<? endif;?>
<?
// spechial anti-bot check
$special_check_first = rand(1,10000);
$special_check_second = rand(1,10000);
$special_check_third = rand(1,10000);
$_SESSION['special'][($special_check_first + $special_check_second)*$special_check_third] = 'check';
?>
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
function special_check_cred()
{
var special_1 = <?=$special_check_first?>;
var special_2 = <?=$special_check_second?>;
var special_3 = <?=$special_check_third?>;
var result = (special_1+special_2)*special_3;
document.write("<in"+"put ty"+"pe=hid");
document.write("den na"+"me=special_c"+"heck ");
document.write("va"+"lue="+result+" />");
}
// ]]></script>
<div class="feedback_page">
<form action="" method="post">
<div class="item"> <label>Ваше имя <span>*</span></label> <input type="text" class="inputbox" name="name" value="<?=@$_POST['name']?>" /></div>
<div class="item"> <label>Почтовый адрес <span>*</span></label> <input type="text" class="inputbox" name="email" value="<?=@$_POST['email']?>" /> </div>
<div class="item"> <label>Номер телефона</label> <input type="text" class="inputbox" name="phone" value="<?=@$_POST['phone']?>" /> </div>
<div class="item"> <label>Сообщение<span>*</span></label> <textarea name="message"><?=@$_POST['message']?>"</textarea> </div>
Предпочитаемый способ связи:
<br />
<span class="tel">Телефон</span><input type="checkbox" name="connect[phone]" value="TRUE"<?=(($_POST['connect']['phone']==TRUE)?'checked="checked"':'')?> /> <span class="mail">Почта</span><input type="checkbox" name="connect[phone]" value="TRUE"<?=(($_POST['connect']['email']==TRUE)?'checked="checked"':'')?> />
<div class="button"><input type="submit" value="Отправить" /></div>
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
special_check()
// ]]></script>
</form></div>
<? $feedback_page = TRUE;?> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
|