Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 20 Ответов
  • 51004 Просмотров
*

killaruns

  • Новичок
  • 2
  • 1 / 0
Сегодня заметил, что в форме обратной связи стандартной плагин reCAPTCHA, не работает. Посоветовавшись с другом (Green спасибо), нашли причину.
Скрипт reCAPTCHA по старому пути больше не доступен. вывод нужно в коде его заменить на рабочий.
Делаем так:
1. Открываем /plugins/captcha/recaptcha/recaptcha.php
2. Меняем
Код
const RECAPTCHA_API_SERVER = "http://api.recaptcha.net";
на
Код
const RECAPTCHA_API_SERVER = "https://www.google.com/recaptcha/api";

Всё должно работать. У кого кеш чистим.
*

1day

  • Захожу иногда
  • 160
  • 7 / 6
у меня тоже перестала она работать в форме стандартной регистрации! думаю должны срочно выпустить 2.5.17
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
По поводу CAPTCHA тут - вкратце, Google перенес сервера с капчей, поэтому сменился адрес. Это пофиксили.

Изменения в файле plugins/captcha/recaptcha/recaptcha.php:

Код: php
-	const RECAPTCHA_API_SERVER = "http://api.recaptcha.net";
+ const RECAPTCHA_API_SERVER = "http://www.google.com/recaptcha/api";

- const RECAPTCHA_VERIFY_SERVER = "api-verify.recaptcha.net";
+ const RECAPTCHA_VERIFY_SERVER = "www.google.com";

- self::RECAPTCHA_VERIFY_SERVER, "/verify",
+ self::RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
*

CyDb6a

  • Захожу иногда
  • 124
  • 0 / 0
  • От меня не уйдешь =)
Наконец-то, еле нашла, спасибо!
*

slavikM

  • Захожу иногда
  • 76
  • 3 / 0
У меня ошибка выскочила, даже после очистки кеша, зашел на адресок по Вашим рекомендациям и сделал так:
Поменял строки в plugins/captcha/recaptcha/recaptcha.php -
-   const RECAPTCHA_API_SERVER = "http://api.recaptcha.net";
+   const RECAPTCHA_API_SERVER = "http://www.google.com/recaptcha/api";
    const RECAPTCHA_API_SECURE_SERVER = "https://www.google.com/recaptcha/api";
-   const RECAPTCHA_VERIFY_SERVER = "api-verify.recaptcha.net";
+   const RECAPTCHA_VERIFY_SERVER = "www.google.com";
-      $response = $this->_recaptcha_http_post(self::RECAPTCHA_VERIFY_SERVER, "/verify",
+      $response = $this->_recaptcha_http_post(self::RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
                                     array(
                                        'privatekey'   => $privatekey,
                                        'remoteip'      => $remoteip,
Извините за повторение, но почему то, когда сменил полностью ветку $response = $this->_recaptcha_http_post(self::RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
                                     array(
                                        'privatekey'   => $privatekey,
                                        'remoteip'      => $remoteip,
тогда и заработало.

Спасибо Вам огромное. *DRINK*  b2z Вам +1
« Последнее редактирование: 09.11.2013, 11:42:17 от slavikM »
*

slavikM

  • Захожу иногда
  • 76
  • 3 / 0
Вот готовый, рабочий файл reCaptcha - recatcha.php
Код
<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Captcha
 *
 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

jimport('joomla.environment.browser');

/**
 * Recaptcha Plugin.
 * Based on the official recaptcha library( https://developers.google.com/recaptcha/docs/php )
 *
 * @package     Joomla.Plugin
 * @subpackage  Captcha
 * @since       2.5
 */
class plgCaptchaRecaptcha extends JPlugin
{
const RECAPTCHA_API_SERVER = "http://www.google.com/recaptcha/api";
  const RECAPTCHA_API_SECURE_SERVER = "https://www.google.com/recaptcha/api";
const RECAPTCHA_VERIFY_SERVER = "www.google.com";

public function __construct($subject, $config)
{
parent::__construct($subject, $config);
$this->loadLanguage();
}

/**
* Initialise the captcha
*
* @param string $id The id of the field.
*
* @return Boolean True on success, false otherwise
*
* @since  2.5
*/
public function onInit($id)
{
// Initialise variables
$lang = $this->_getLanguage();
$pubkey = $this->params->get('public_key', '');
$theme = $this->params->get('theme', 'clean');

if ($pubkey == null || $pubkey == '')
{
throw new Exception(JText::_('PLG_RECAPTCHA_ERROR_NO_PUBLIC_KEY'));
}

$server = self::RECAPTCHA_API_SERVER;
if (JBrowser::getInstance()->isSSLConnection())
{
$server = self::RECAPTCHA_API_SECURE_SERVER;
}

JHtml::_('script', $server.'/js/recaptcha_ajax.js');
$document = JFactory::getDocument();
$document->addScriptDeclaration('window.addEvent(\'domready\', function() {
Recaptcha.create("'.$pubkey.'", "dynamic_recaptcha_1", {theme: "'.$theme.'",'.$lang.'tabindex: 0});});'
);

return true;
}

/**
* Gets the challenge HTML
*
* @return  string  The HTML to be embedded in the form.
*
* @since  2.5
*/
public function onDisplay($name, $id, $class)
{
return '<div id="dynamic_recaptcha_1"></div>';
}

/**
  * Calls an HTTP POST function to verify if the user's guess was correct
  *
  * @return  True if the answer is correct, false otherwise
  *
  * @since  2.5
  */
public function onCheckAnswer($code)
{
// Initialise variables
$privatekey = $this->params->get('private_key');
$remoteip = JRequest::getVar('REMOTE_ADDR', '', 'SERVER');
$challenge = JRequest::getString('recaptcha_challenge_field', '');
$response = JRequest::getString('recaptcha_response_field', '');;

// Check for Private Key
if (empty($privatekey))
{
$this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_NO_PRIVATE_KEY'));
return false;
}

// Check for IP
if (empty($remoteip))
{
$this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_NO_IP'));
return false;
}

// Discard spam submissions
if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0)
{
$this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_EMPTY_SOLUTION'));
return false;
}

$response = $this->_recaptcha_http_post(self::RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
  array(
  'privatekey' => $privatekey,
  'remoteip' => $remoteip,
'challenge' => $challenge,
'response' => $response
)
  );

$answers = explode("\n", $response[1]);

if (trim($answers[0]) == 'true') {
return true;
}
else
{
//@todo use exceptions here
$this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_'.strtoupper(str_replace('-', '_', $answers[1]))));
return false;
}
}

/**
* Encodes the given data into a query string format.
*
* @param   string  $data  Array of string elements to be encoded
*
* @return  string  Encoded request
*
* @since  2.5
*/
private function _recaptcha_qsencode($data)
{
$req = "";
foreach ($data as $key => $value)
{
$req .= $key . '=' . urlencode(stripslashes($value)). '&';
}

// Cut the last '&'
$req = rtrim($req, '&');
return $req;
}

/**
* Submits an HTTP POST to a reCAPTCHA server.
*
* @param   string  $host
* @param   string  $path
* @param   array   $data
* @param   int     $port
*
* @return  array   Response
*
* @since  2.5
*/
private function _recaptcha_http_post($host, $path, $data, $port = 80)
{
$req = $this->_recaptcha_qsencode($data);

$http_request  = "POST $path HTTP/1.0\r\n";
$http_request .= "Host: $host\r\n";
$http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
$http_request .= "Content-Length: " . strlen($req). "\r\n";
$http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
$http_request .= "\r\n";
$http_request .= $req;

$response = '';
if (($fs = @fsockopen($host, $port, $errno, $errstr, 10)) == false )
{
die('Could not open socket');
}

fwrite($fs, $http_request);

while (!feof($fs))
{
// One TCP-IP packet
$response .= fgets($fs, 1160);
}

fclose($fs);
$response = explode("\r\n\r\n", $response, 2);

return $response;
}

/**
* Get the language tag or a custom translation
*
* @return string
*
* @since  2.5
*/
private function _getLanguage()
{
// Initialise variables
$language = JFactory::getLanguage();

$tag = explode('-', $language->getTag());
$tag = $tag[0];
$available = array('en', 'pt', 'fr', 'de', 'nl', 'ru', 'es', 'tr');

if (in_array($tag, $available))
{
return "lang : '" . $tag . "',";
}

// If the default language is not available, let's search for a custom translation
if ($language->hasKey('PLG_RECAPTCHA_CUSTOM_LANG'))
{
$custom[] ='custom_translations : {';
$custom[] ="\t".'instructions_visual : "' . JText::_('PLG_RECAPTCHA_INSTRUCTIONS_VISUAL'). '",';
$custom[] ="\t".'instructions_audio : "' . JText::_('PLG_RECAPTCHA_INSTRUCTIONS_AUDIO'). '",';
$custom[] ="\t".'play_again : "' . JText::_('PLG_RECAPTCHA_PLAY_AGAIN'). '",';
$custom[] ="\t".'cant_hear_this : "' . JText::_('PLG_RECAPTCHA_CANT_HEAR_THIS'). '",';
$custom[] ="\t".'visual_challenge : "' . JText::_('PLG_RECAPTCHA_VISUAL_CHALLENGE'). '",';
$custom[] ="\t".'audio_challenge : "' . JText::_('PLG_RECAPTCHA_AUDIO_CHALLENGE'). '",';
$custom[] ="\t".'refresh_btn : "' . JText::_('PLG_RECAPTCHA_REFRESH_BTN'). '",';
$custom[] ="\t".'help_btn : "' . JText::_('PLG_RECAPTCHA_HELP_BTN'). '",';
$custom[] ="\t".'incorrect_try_again : "' . JText::_('PLG_RECAPTCHA_INCORRECT_TRY_AGAIN'). '",';
$custom[] ='},';
$custom[] ="lang : '" . $tag . "',";

return implode("\n", $custom);
}

// If nothing helps fall back to english
return '';
}
}

*

GoshaT

  • Новичок
  • 1
  • 0 / 0
Огромное спасибо! Помогло. Четыре дня головой об стену......
*

killaruns

  • Новичок
  • 2
  • 1 / 0
Решение от b2z, более правильное и расширенное.  ^-^
*

Neecos

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Спасибо, очень помогли! *DRINK*
*

mr_denisters

  • Захожу иногда
  • 127
  • 6 / 0
  • Очередной Вебмастер
По поводу CAPTCHA тут - вкратце, Google перенес сервера с капчей, поэтому сменился адрес. Это пофиксили.

Изменения в файле plugins/captcha/recaptcha/recaptcha.php:

Код: php
-	const RECAPTCHA_API_SERVER = "http://api.recaptcha.net";
+ const RECAPTCHA_API_SERVER = "http://www.google.com/recaptcha/api";

- const RECAPTCHA_VERIFY_SERVER = "api-verify.recaptcha.net";
+ const RECAPTCHA_VERIFY_SERVER = "www.google.com";

- self::RECAPTCHA_VERIFY_SERVER, "/verify",
+ self::RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
Спасибо огромное, без CAPTCHA задолбался ботов удалять ::)
*

litokno

  • Новичок
  • 7
  • 0 / 0
b2z, спасибо! помогли
*

EL_light

  • Новичок
  • 1
  • 0 / 0
Спасибо всем, фурычит CAPTCHAтина :)
*

rotvellerr

  • Захожу иногда
  • 72
  • 0 / 0
Мне этот вариант не помог!  >:( В форме обратной связи показывается только надпись CAPTCHA *.
Joomla 3.2.0
Даже не знаю куда копать!
*

Pavel M

  • Захожу иногда
  • 103
  • 8 / 0
  • Учиться никогда не поздно
Мне этот вариант не помог!  >:( В форме обратной связи показывается только надпись CAPTCHA *.
Joomla 3.2.0
Даже не знаю куда копать!
Странно. У меня на 2.5 и 3.2 все заработало. Сделайте, как тут написано http://docs.joomla.org/J3.2:The_reCaptcha_function_has_been_temporarily_disabled_for_Joomla_3.2
*

rotvellerr

  • Захожу иногда
  • 72
  • 0 / 0
Заметил, что не работает только на шаблоне Beez3. На других работает
*

millionolga

  • Новичок
  • 2
  • 0 / 0
Joomla 3.2.0 , тема nano2
Заработала captcha! yes!
Сделала, как написано у b2z
Благодарю Вас!
*

Milan720p

  • Осваиваюсь на форуме
  • 46
  • 0 / 0
CAPTCHA при регистрации пофиксилась, а вот при восстановлении логина\пароля:

Код
Fatal error: Call to undefined method JFormField::__set() in /home/****/****.com/www/libraries/cms/form/field/captcha.php on line 69
*

Abiladenda

  • Захожу иногда
  • 181
  • 5 / 0
Зачем нужна CAPTCHA в форме регистрации если на сайте нет комментариев и форума, ведь боты свои майлы не будут подставлять что бы авторизоваться а если и будут то что им на вашем сайте делать?

В форме регистрации CAPTCHA нужна только если вы не выставляете подтверждение регистрации нового юзера через емаил, или если у вас есть комментарии или форум, завязанный на регистрацию юзеров через сайт!
*

zvi

  • Захожу иногда
  • 392
  • 4 / 0
все дела на стоковой j 2.516 и стандарт шаблон, не видать картинки, ключи стоят все влючено
*

1day

  • Захожу иногда
  • 160
  • 7 / 6
Уже вышли новые версии в ветке 2.5 и 3.2 и там эту ошибку исправили. Просто обновите свою Joomla до последней версии.
*

zvi

  • Захожу иногда
  • 392
  • 4 / 0
уже блин обновлял хорошо что копию сделал другое перестало работать
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Сайт перестал работать в Chrome

Автор svadebschik

Ответов: 21
Просмотров: 1597
Последний ответ 25.03.2019, 20:36:40
от AndrewVas
Как подправить вывод таблички recaptcha на русском?

Автор busik

Ответов: 4
Просмотров: 1225
Последний ответ 17.02.2019, 18:58:15
от busik
Вывод контента com_content материалов и категорий по id. Решение

Автор Fedor Vlasenko

Ответов: 16
Просмотров: 21052
Последний ответ 01.10.2018, 14:32:38
от Fedor Vlasenko
Периодически перестает работать корзина

Автор RomKa111

Ответов: 14
Просмотров: 1058
Последний ответ 15.06.2018, 12:33:23
от RomKa111
Перестал работать сайт, белый экран. В админку входит

Автор mrOrange

Ответов: 11
Просмотров: 2011
Последний ответ 21.05.2018, 10:12:12
от SeBun