Проверка каптчи.

#1 12 октября 2015 в 14:29
Всем, привет.Версия 1.10.6. Пытаюсь подключить recaptcha google.Родную отключил.Переписал плагин, обозвал по новому.Сама капча работает. Т.е. галочка ставится, картинки выбираются. Но вот с проверкой ни как не сладить.вот плагин
  1.  
  2. class p_captcha extends cmsPlugin {
  3.  
  4. public $config = array(
  5. 'pubkey' => '',
  6. 'privkey' => ''
  7. );
  8.  
  9. public function __construct() {
  10.  
  11. global $_LANG;
  12.  
  13. // Информация о плагине
  14. $this->info['plugin'] = 'p_captcha';
  15. $this->info['title'] = $_LANG['P_CAPTCHA_TITLE'];
  16. $this->info['description'] = $_LANG['P_CAPTCHA_DESCRIPTION'];
  17. $this->info['author'] = 'InstantCMS Team';
  18. $this->info['version'] = '1.0';
  19. $this->info['published'] = 1;
  20. $this->info['plugin_type'] = 'captcha';
  21.  
  22. $this->events[] = 'GET_CAPTCHA';
  23. $this->events[] = 'CHECK_CAPTCHA';
  24.  
  25.  
  26.  
  27. parent::__construct();
  28.  
  29. }
  30.  
  31. /**
  32.   * Обработка событий
  33.   * @param string $event
  34.   * @param array $item
  35.   * @return html
  36.   */
  37. public function execute($event='', $item=array()){
  38.  
  39. switch ($event){
  40. case 'GET_CAPTCHA': return $this->getCaptcha();
  41. case 'CHECK_CAPTCHA': return $this->checkCaptcha();
  42. }
  43.  
  44. return;
  45.  
  46. }
  47.  
  48.  
  49. /**
  50.   * Возвращает код каптчи
  51.   * @return html
  52.   */
  53. public function getCaptcha() {
  54.  
  55. global $_LANG;
  56. $pubkey = $this->config['pubkey'];
  57. if ($pubkey == null || $pubkey == '') {
  58. cmsCore::addSessionMessage($_LANG['ERROR_CAPTCHA'], 'error'); $errors = true;
  59. }
  60.  
  61. cmsPage::initTemplate('plugins','p_captcha.tpl')->
  62. assign('pubkey', $pubkey)->
  63. display('p_captcha.tpl');
  64.  
  65. return ob_get_clean();
  66.  
  67. }
  68.  
  69. /**
  70.   * Проверяет код каптчи
  71.   */
  72. public function checkCaptcha() {
  73.  
  74. $privkey = $this->config['privkey'];
  75. $response ='g-recaptcha-response';
  76. $url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $privkey . '&response=' . $response;
  77.  
  78. if ($privkey == null || $privkey == '') {
  79. cmsCore::addSessionMessage($_LANG['ERROR_CAPTCHA'], 'error'); $errors = true;
  80.  
  81. }
  82.  
  83. $val = $this->getGooglePage($url);
  84.  
  85. return json_decode($val)->success;
  86. }
  87.  
  88. public function getGooglePage($url) {
  89. $ch = curl_init();
  90. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  91. curl_setopt($ch, CURLOPT_HEADER, false);
  92. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  93. curl_setopt($ch, CURLOPT_URL, $url);
  94. curl_setopt($ch, CURLOPT_REFERER, $url);
  95. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  96. $result = curl_exec($ch);
  97. curl_close($ch);
  98. return $result;
  99. }
  100.  
  101. }
  102.  
Проверка в файле frontend.php от родной капчи
  1. if(!cmsPage::checkCaptchaCode()) { cmsCore::addSessionMessage($_LANG['ERR_CAPTCHA'], 'error'); $errors = true; }
page.class.php
  1. public static function checkCaptchaCode() {
  2.  
  3. return cmsCore::callEvent('CHECK_CAPTCHA', false);
  4.  
  5. }
Подскажите почему не работает?
#2 2 декабря 2015 в 19:48
апну тему, хорошая капча для 1/10/6 необходима, боты недреслют...

Может у кого есть идеи?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.