PHP

Новая красивая captcha

1) Заливаем в корень сайта каталог fonts и заменяем image.php на файл в архиве

2) /base/danneo.template.php

Найти:

# captcha 
$this->unmanule['captcha'] = ($setting['captcha']=='yes' && defined("REMOTE_ADDRS")) ? 'yes' : 'no';  
после вставить:
PHP код:
# secpic // новая captcha 
if (@$_SESSION['secpic']) {unset($_SESSION['secpic']); }  
@session_start();  
$antibot="<img src='image.php' alt='защитный код'>";


найти:

$this->parseprint(array('uname'=>$usermain['uname'],  
                        'title'=>$title,  
                        'comment_name'=>$lang['comment_name'],  
                        'comment_title'=>$lang['all_title'],  
                        'comment_editor'=>$lang['comment_editor'],  
                        'comment_list_smilie'=>$lang['comment_list_smilie'],  
                        'smilielist'=>$smilielist,  
                        'jsvar'=>$jsvar,  
                        'id'=>$id,  
                        'val'=>$val,  
                        'comment_add_button'=>$lang['comment_add_button']  
                      ),$form);  
}


заменить на:

$this->parseprint(array('uname'=>$usermain['uname'], 
                        'title'=>$title, 
                        'comment_name'=>$lang['comment_name'], 
                        'comment_title'=>$lang['all_title'], 
                        'comment_editor'=>$lang['comment_editor'], 
                        'comment_list_smilie'=>$lang['comment_list_smilie'], 
                        'smilielist'=>$smilielist, 
                        'jsvar'=>$jsvar, 
                        'id'=>$id, 
                        'val'=>$val, 
                 'antibot'=>$antibot, // каптча 
                        'comment_add_button'=>$lang['comment_add_button'] 
                      ),$form); 
}



Модуль Mail

/mod/mail/index.php

найти:

$tm->unmanule['captcha'] = ($setting['captcha']=='yes' && defined("REMOTE_ADDRS")) ? 'yes' : 'no';  
ниже вставить:
PHP код:
# secpic 
if (@$_SESSION['secpic']) {unset($_SESSION['secpic']); }  
@session_start();  
$antibot="<img src='image.php' alt='защитный код'>";


найти:

$tm->parseprint(array('email_name'=>$lang['email_name'], 
                      'email'=>$lang['e_mail'], 
                      'email_text'=>$lang['email_text'], 
                      'mail_hint'=>$lang['mail_hint'], 
                      'uname'=>$usermain['uname'], 
                      'umail'=>$usermain['umail'], 
                      'email_send'=>$lang['email_send'] 
                      ),$tm->parsein($tm->create('mod/'.WORKMOD.'/form.mail')));


заменить на:

$tm->parseprint(array('email_name'=>$lang['email_name'], 
                      'email'=>$lang['e_mail'], 
                      'email_text'=>$lang['email_text'], 
                      'mail_hint'=>$lang['mail_hint'], 
                      'uname'=>$usermain['uname'], 
                      'umail'=>$usermain['umail'], 
               'antibot'=>$antibot, // каптча 
                      'email_send'=>$lang['email_send'] 
                      ),$tm->parsein($tm->create('mod/'.WORKMOD.'/form.mail')));


найти:

if($setting['captcha'] == 'yes'){ 
 if(findcaptcha(REMOTE_ADDRS,$captcha) == 1){ 
  # 
   include(DNBASE."temp/head.php"); 
   # 
    $tm->parseprint(array('isset_error'=>$lang['isset_error'], 
                          'error'=>$lang['bad_captcha'], 
                          'go_back'=>$lang['all_goback'] 
                          ),$tm->create('error')); 
   # 
   include(DNBASE."temp/foot.php"); 
  # 
 } 
}


заменить на:

/* 
if($setting['captcha'] == 'yes'){ 
 if(findcaptcha(REMOTE_ADDRS,$captcha) == 1){ 
  # 
   include(DNBASE."temp/head.php"); 
   # 
    $tm->parseprint(array('isset_error'=>$lang['isset_error'], 
                          'error'=>$lang['bad_captcha'], 
                          'go_back'=>$lang['all_goback'] 
                          ),$tm->create('error')); 
   # 
   include(DNBASE."temp/foot.php"); 
  # 
 } 
} 
*/


найти:

$sendnames = strtr($sendnames,"\015\012"," ");  
$sendmails = strtr($sendmails,"\015\012"," ");  
$subject = $lang['contact_subject']." - ".$setting['site'];  
$message = this_text(array("br"=>"\r\n",  
                           "sendname"=>$sendnames,  
                           "sendmail"=>$sendmails,  
                           "text"=>$sendtexts  
                           ),$lang['contact_msgtext']);  
send_mail($setting['site_mail'],$subject,$message,$setting['site'],$sendmails);


заменить на:

if($setting['captcha'] == 'yes'){ 
if ($_POST['keystring']) { session_start(); }  
if(isset($_SESSION['secpic']) && $_SESSION['secpic'] ==  $_POST['keystring']){   
    $sendnames = strtr($sendnames,"\015\012"," ");  
    $sendmails = strtr($sendmails,"\015\012"," ");  
    $subject = $lang['contact_subject']." - ".$setting['site'];  
    $message = this_text(array("br"=>"\r\n",  
                               "sendname"=>$sendnames,  
                               "sendmail"=>$sendmails,  
                               "text"=>$sendtexts  
                               ),$lang['contact_msgtext']);  
    send_mail($setting['site_mail'],$subject,$message,$setting['site'],$sendmails);  
} else {   
    if($ajax==0){ include("temp/head.php"); }  
    $error = $tm->create('error');  
    $tm->parseprint(array('isset_error'=>$lang['isset_error'],  
                          'error'=>$lang['bad_captcha'],  
                          'go_back'=>$lang['all_goback']),$error);  
    if($ajax==0){ include("temp/foot.php"); } else { exit(); }  
}  
}


открыть /temp/Default/mod/mail/form.mail.tpl

найти:

<!--if:captcha:yes-->
<div>
    &nbsp;<a onclick="DN.recaptcha(); return false;" href="javascript:DN.recaptcha(); return false;">Обновить</a>
    <div id="captcha"><img src="image.php?to=captcha&amp;t=12345" alt="" /></div>
    <input name="captcha" style="width:7em" title="Введите цифры на картинке" type="text" maxlength="5" value="" /> <b>*</b>
    </div>
<!--if-->
заменить на:
Код HTML:
<!--if:captcha:yes-->
<a onclick="DN.recaptcha(); return false;" href="javascript:DN.recaptcha(); return false;">Обновить</a><br/>
<div id="captcha">{antibot}</div>
<input name="keystring" id="keystring" size="20" type="text" maxlength="255">
<!--if-->


Модуль новости

Модуль: /mod/news/comment.php

найти:

if($setting['captcha']=='yes'){ 
 # 
 if(findcaptcha(REMOTE_ADDRS,$captcha)==1){ 
  # 
  if($ajax==0){ include(DNBASE."temp/head.php"); } 
   $tm->parseprint(array('boxtitle'=>$lang['isset_error'], 
                         'boxtext'=>$lang['bad_captcha'], 
                         'go_back'=>$lang['all_goback']),$box); 
  if($ajax==0){ include(DNBASE."temp/foot.php"); } else { exit(); } 
  # 
 } 
 # 
}


заменить на:

/* 
if($setting['captcha']=='yes'){ 
 # 
 if(findcaptcha(REMOTE_ADDRS,$captcha)==1){ 
  # 
  if($ajax==0){ include(DNBASE."temp/head.php"); } 
   $tm->parseprint(array('boxtitle'=>$lang['isset_error'], 
                         'boxtext'=>$lang['bad_captcha'], 
                         'go_back'=>$lang['all_goback']),$box); 
  if($ajax==0){ include(DNBASE."temp/foot.php"); } else { exit(); } 
  # 
 } 
 # 
} 
*/


найти:

$comtext = ($setting['neditor']=="yes") ? commentparse($comtext) : deltags(commentparse($comtext)); 
# 
$comname = (preparse($usermain['logged'],THIS_INT)==1 && preparse($usermain['userid'],THIS_INT)>0) ? $usermain['uname'] : substr(deltags($comname),0,50); 
# 
$comtitle = substr(deltags($comtitle),0,255); 
# 
$in = $db->query("INSERT INTO ".$basepref."_news_comment VALUES 
                 (NULL,'".$item['newsid']."','".$usermain['userid']."','".NEWTIME."', 
                 '".$db->escape($comname)."', 
                 '".$db->escape($api->sitesp($comtitle))."', 
                 '".$db->escape($comtext)."', 
                 '".REMOTE_ADDRS."')");


заменить на:

if ($_POST['keystring']) { session_start(); }  
if(isset($_SESSION['secpic']) && $_SESSION['secpic'] ==  $_POST['keystring']){ // CAPTCHA Correct  
    $comtext=($setting['neditor']=="yes") ? commentparse($comtext) : deltags(commentparse($comtext));  
    $comname = (preparse($usermain['logged'],THIS_INT)==1 && preparse($usermain['userid'],THIS_INT)>0) ? $usermain['uname'] : substr(deltags($comname),0,50);  
    $comtitle = substr(deltags($comtitle),0,255);  
    $in = $db->query("INSERT INTO ".$basepref."_news_comment VALUES  
                     (NULL,'".$item['newsid']."','".$usermain['userid']."','".NEWTIME."',  
                     '$comname','$comtitle','$comtext','".REMOTE_ADDRS."')");  
} else { // CAPTCHA Wrong  
    if($ajax==0){ include("temp/head.php"); }  
    $tm->parseprint(array('boxtitle'=>$lang['isset_error'],  
                          'boxtext'=>$lang['wrong_captcha'],  
                          'go_back'=>$lang['all_goback']),$box);  
    if($ajax==0){ include("temp/foot.php"); } else { exit(); }  
}


Шаблон /temp/Default/mod/news/form.comment.tpl

найти:

<!--if:captcha:yes-->
<div>
<p><a onclick="DN.recaptcha(); return false;" href="javascript:DN.recaptcha(); return false;">Обновить</a></p>
</div> 
<div>
<p><input name="captcha" style="width:9em" type="text" maxlength="5" value="" title="Код проверки" /> <b>*</b></p>
</div>
<!--if-->
заменить на 
Код HTML:
<!--if:captcha:yes-->
<a onclick="DN.recaptcha(); return false;" href="javascript:DN.recaptcha(); return false;">Обновить</a><br/>
<div id="captcha">{antibot}</div>
<input name="keystring" id="keystring" size="20" type="text" maxlength="255">
<!--if-->


для изменения шрифта captcha, залейте шрифт/шрифты в папку fonts

Исходник: secpic.zip
Теги:
captcha, comment, error, setting, usermain, email, array, include, secpic, isset, parseprint, title, uname, найти, SESSION, recaptcha, keystring, antibot, sendmails, false, заменить, return, DNBASE, REMOTE, comtext, ADDRS, sendnames, subject, comtitle, comname, deltags, goback, create, strtr, findcaptcha
Добавлено: 27 Февраля 2015 06:57:06 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...