vanesxl
@vanesxl

Как встроить рекапчу 2 на joomla 1.5?

Добрый день!
Прилетела задача встроить рекапчу 2 на joomla 1.5, а именно она должна быть в форме при регистрации пользователей!
За основу я взял этот плагин:
https://github.com/milkycode/joomla_recaptcha_j15
Далее открыл файл по адресу:
/components/com_user/views/register/tmpl/default.php

В нем к форме добавил следующий код:
<tr>
	<td colspan="2">
		<?php echo ReCaptcha::get('html'); ?>
	</td>
</tr>

В админке прописал публичный и секретный ключ.
В результате у меня появилась рекапча в форме.
Далее я открыл файл:
/components/com_user/controller.php
В нем нашел функцию:
function register_save()
	{
		global $mainframe;

		// Check for request forgeries
		JRequest::checkToken() or jexit( 'Invalid Token' );

		// Get required system objects
		$user 		= clone(JFactory::getUser());
		$pathway 	=& $mainframe->getPathway();
		$config		=& JFactory::getConfig();
		$authorize	=& JFactory::getACL();
		$document   =& JFactory::getDocument();

		// If user registration is not allowed, show 403 not authorized.
		$usersConfig = &JComponentHelper::getParams( 'com_users' );
		if ($usersConfig->get('allowUserRegistration') == '0') {
			JError::raiseError( 403, JText::_( 'Access Forbidden' ));
			return;
		}

		// Initialize new usertype setting
		$newUsertype = $usersConfig->get( 'new_usertype' );
		if (!$newUsertype) {
			$newUsertype = 'Registered';
		}

		// Bind the post array to the user object
		if (!$user->bind( JRequest::get('post'), 'usertype' )) {
			JError::raiseError( 500, $user->getError());
		}

		// Set some initial user values
		$user->set('id', 0);
		$user->set('usertype', $newUsertype);
		$user->set('gid', $authorize->get_group_id( '', $newUsertype, 'ARO' ));

		$date =& JFactory::getDate();
		$user->set('registerDate', $date->toMySQL());

		// If user activation is turned on, we need to set the activation information
		$useractivation = $usersConfig->get( 'useractivation' );
		if ($useractivation == '1')
		{
			jimport('joomla.user.helper');
			$user->set('activation', JUtility::getHash( JUserHelper::genRandomPassword()) );
			$user->set('block', '1');
		}

		// If there was an error with registration, set the message and display form

		if (ReCaptcha::get('submit')) { // 
			if (!ReCaptcha::get('success')) {
				JError::raiseWarning('', 'Неверный код проверки!'); //если не верно выводим сообщение
				$this->register(); 
				return false;
		   }else{
			if ( !$user->save() )
			{
				JError::raiseWarning('', JText::_( $user->getError()));
				$this->register();
				return false;
			}
	
			// Send registration confirmation mail
			$password = JRequest::getString('password', '', 'post', JREQUEST_ALLOWRAW);
			$password = preg_replace('/[\x00-\x1F\x7F]/', '', $password); //Disallow control chars in the email
			UserController::_sendMail($user, $password);
	
			// Everything went fine, set relevant message depending upon user activation state and display message
			if ( $useractivation == 1 ) {
				$message  = JText::_( 'REG_COMPLETE_ACTIVATE' );
			} else {
				$message = JText::_( 'REG_COMPLETE' );
			}
	
			$this->setRedirect('index.php', $message);
		   }
	   }else{
		print_r(ReCaptcha::get('submit'));
		JError::raiseWarning('', 'Не удалось проверить капчу!'); //если не верно выводим сообщение
		$this->register(); 
		return false;
	   }
	}

Вся проверка капчи происходит тут:
if (ReCaptcha::get('submit')) { // 
			if (!ReCaptcha::get('success')) {
				JError::raiseWarning('', 'Неверный код проверки!'); //если не верно выводим сообщение
				$this->register(); 
				return false;
		   }else{
			if ( !$user->save() )
			{
				JError::raiseWarning('', JText::_( $user->getError()));
				$this->register();
				return false;
			}
	
			// Send registration confirmation mail
			$password = JRequest::getString('password', '', 'post', JREQUEST_ALLOWRAW);
			$password = preg_replace('/[\x00-\x1F\x7F]/', '', $password); //Disallow control chars in the email
			UserController::_sendMail($user, $password);
	
			// Everything went fine, set relevant message depending upon user activation state and display message
			if ( $useractivation == 1 ) {
				$message  = JText::_( 'REG_COMPLETE_ACTIVATE' );
			} else {
				$message = JText::_( 'REG_COMPLETE' );
			}
	
			$this->setRedirect('index.php', $message);
		   }
	   }else{
		print_r(ReCaptcha::get('submit'));
		JError::raiseWarning('', 'Не удалось проверить капчу!'); //если не верно выводим сообщение
		$this->register(); 
		return false;
	   }

У меня почему то не выполняется это условие:
if (ReCaptcha::get('submit'))
И выполняется код:
}else{
		print_r(ReCaptcha::get('submit'));
		JError::raiseWarning('', 'Не удалось проверить капчу!'); //если не верно выводим сообщение
		$this->register(); 
		return false;
	   }

Что я делаю не так? Заранее большое спасибо!
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы