Добрый день!
Прилетела задача встроить рекапчу 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;
}
Что я делаю не так? Заранее большое спасибо!