Новости Joomla

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

Rexton

  • Осваиваюсь на форуме
  • 21
  • 2 / 0
Доброго времени суток, форумчане.


Столкнулся с такой вот проблемкой...

Нужно было сделать дополнительное поле в форме регистрации (Joomla 1.5)
Прописал это поле здесь components/com_user/views/registration/tmpl/default.php

Потом поставил плагин, который пишет значения из дополнительного поля в jos_users -> params
Params перед записью шифруются в MD5
Код
class plgUserExtUsData extends JPlugin {

    function onAfterStoreUser($user, $isnew, $success, $msg)
    {
   
        if ($isnew) {
            $db =& JFactory::getDBO();
            $registry = new JRegistry();
            $registry->loadArray md5(($_POST['params']));
            $params = $registry->toString();
            $db->setQuery("UPDATE #__users SET params = '" .  $db->getEscaped($params). "' WHERE id = " . $user['id']);
            $db->query();           

}


Нужно сделать проверку веденного значения, если искомое найдено в базе, то заносить юзера в опеределенную группу, если нет то делать просто Registered.

Код
$query = "SELECT kod FROM Any_Table WHERE act = '".$params."'";
$db =& JFactory::getDBO(); ///Соединение с базой
$db->setQuery($query); // Выполнение запроса
$db->getError(); //Если запрос не выполнен, выводим ошибку
$key = $db->loadResult(); //Загружаем результат запроса


Собственно, смысл этой проверки:

Код
//Если такой ключ есть, прописываем пользователя в группу легальных 
if ($key = $params ) //Сравниваем результат из БД и введенный юзером ключ
{
$query = "INSERT INTO 'jos_usergroups' ('id' ,  'user_id' ,  'group_id'  ) VALUES ( '.$user['id'].', '.$user['id'].', 11 ";
$db =& JFactory::getDBO();
$db->setQuery($query);
$db->getError();



Может кто поможет решить?
*

Rexton

  • Осваиваюсь на форуме
  • 21
  • 2 / 0
Переписанный код:
Код
<?php

defined('_JEXEC') or die( 'Restricted access' );

jimport('joomla.plugin.plugin');

class plgUserExtUsData extends JPlugin {

    function onAfterStoreUser($user, $isnew, $success, $msg)
    {
        if ($isnew) {
            $db =& JFactory::getDBO();
$kod = JRequest::getString('kod', '', 'post', JREQUEST_ALLOWRAW);
            $db->setQuery("UPDATE #__users SET kod = '" .  md5($db->getEscaped($kod)). "' WHERE id = " . $user['id']);
            $db->query();            
        }
$userid = $user['id'];
$legal_group = 11;
$not_legal = 9;
$user=& JFactory::getUser();
$user_key = $user->get('kod');
$username = $user->get('username');
$db->setQuery("SELECT * FROM My_Table WHERE kod = '".$user_key."'");
$main_key = $db->loadResult();


if ($user_key == $main_key){
$query = "INSERT INTO #__fua_userindex SET id='$userid' , user_id='$userid' , group_id='$legal_group'";
$db->setQuery($query);
if(!$db->query()) {
die("SQL error".$db->stderr(true));
}

$db->setQuery("UPDATE My_Table SET username='$username' WHERE kod='$user_key'");
if(!$db->query()) {
die("SQL error".$db->stderr(true));
}

}
else{


$query = "INSERT INTO #__fua_userindex SET id='$userid' , user_id='$userid' , group_id='$not_legal'";
$db->setQuery($query);
if(!$db->query()) {
die("SQL error".$db->stderr(true));
}

}






    }

}

?>

Проблема тоже изменилась....

Теперь всех пользователей прописывает как $legal_group .... то есть не сравнивает...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Защита от ботов при регистрации

Автор shaverma

Ответов: 11
Просмотров: 8180
Последний ответ 23.03.2015, 14:12:04
от AdmbVlad
В админке нет поля ввода логина/пароля

Автор menar

Ответов: 4
Просмотров: 1629
Последний ответ 25.02.2015, 21:51:37
от menar
Нету поля "Lightbox Rel параметр"

Автор slavikrovno

Ответов: 0
Просмотров: 953
Последний ответ 22.01.2014, 02:16:40
от slavikrovno
Добавление материала без регистрации

Автор zosimov

Ответов: 8
Просмотров: 1395
Последний ответ 21.10.2013, 12:45:59
от smart
После отключения регистрации в CommunityBuilder сбились размеры материалов

Автор piquick

Ответов: 2
Просмотров: 956
Последний ответ 17.10.2013, 14:55:35
от piquick