Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1 2

Мод входа - поддержка паролей Ucoz

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#1
Мод обеспечивает поддержку паролей Ucoz, благодаря чему пользователи, перенесенные с помощью конвертора смогут авторизироваться без необходимости смены пароля.
Для установки мода необходимо:
1) В функции "login" файла "\modules\users\index.php" заменить строки
Code:
$res = $this->DB->query("SELECT *, UNIX_TIMESTAMP(last_visit) as unix_last_visit
                FROM `" . $this->DB->getFullTableName('users') . "`  WHERE name='"
                .mysql_real_escape_string( $name )."' AND passw='".mysql_real_escape_string( md5( $password ) )
                ."' LIMIT 1");

            if (count($res) == 0) $error = $error.'<li>' . __('Wrong login or pass') . '</li>'."\n";
на строки
Code:
$res = $this->DB->query("SELECT *, UNIX_TIMESTAMP(last_visit) as unix_last_visit
                FROM `" . $this->DB->getFullTableName('users') . "`  WHERE name='"
                .mysql_real_escape_string( $name )."' LIMIT 1");
            $test = false;
            if (count($res) > 0) {
                $passw = $res[0]['passw'];
                $pos = strpos($passw, '$', 3);
                if (strpos($passw, '$1$') === 0 && CRYPT_MD5 == 1 && $pos > 0) {
                    $test = (crypt( $password, substr($passw, 0, $pos + 1)) == $passw);
                } else {
                    $test = (md5( $password ) == $passw);
                }
            }
            if (count($res) == 0 || !$test) $error = $error.'<li>' . __('Wrong login or pass') . '</li>'."\n";
2) В функции "update" файла "\modules\users\index.php" заменить строки
Code:
if ( md5( $_POST['password'] ) != $_SESSION['user']['passw'] )
                $error = $error.'<li>' . __('Wrong current pass') . '</li>'."\n";
на строки
Code:
$test = false;
            $passw = $_SESSION['user']['passw'];
            $pos = strpos($passw, '$', 3);
            if (strpos($passw, '$1$') === 0 && CRYPT_MD5 == 1 && $pos > 0) {
                $test = (crypt( $password, substr($passw, 0, $pos + 1)) == $passw);
            } else {
                $test = (md5( $password ) == $passw);
            }
            if (!$test)
                $error = $error.'<li>' . __('Wrong current pass') . '</li>'."\n";
3) В файле "\sys\fnc\autologin.php" заменить строки
Code:
$query = "SELECT *, UNIX_TIMESTAMP(last_visit) as unix_last_visit
            FROM `" . $FpsDB->getFullTableName('users') . "`
            WHERE `name`='".mysql_real_escape_string( $name )."'
            AND `passw`='".mysql_real_escape_string( $password )."'
            LIMIT 1";
  $res = $FpsDB->query( $query );


  // Если пользователь с таким логином и паролем не найден -
  // значит данные неверные и надо их удалить
  if ( count( $res ) < 1 ) {
    //$tmppos = strrpos( $_SERVER['PHP_SELF'], '/' ) + 1;
    //$path = substr( $_SERVER['PHP_SELF'], 0, $tmppos );
    $path = '/';
    setcookie( 'autologin', '', time() - 1, $path );
    setcookie( 'username', '', time() - 1, $path );
    setcookie( 'password', '', time() - 1, $path );
    return false;
  }
на строки
Code:
$query = "SELECT *, UNIX_TIMESTAMP(last_visit) as unix_last_visit
            FROM `" . $FpsDB->getFullTableName('users') . "`
            WHERE `name`='".mysql_real_escape_string( $name )."'
            LIMIT 1";
  $res = $FpsDB->query( $query );

  $test = false;
  if (count($res) > 0) {
    $passw = $res[0]['passw'];
    $pos = strpos($passw, '$', 3);
    if (strpos($passw, '$1$') === 0 && CRYPT_MD5 == 1 && $pos > 0) {
      $test = (crypt( $password, substr($passw, 0, $pos + 1)) == $passw);
    } else {
      $test = ($password == $passw);
    }
  }

  // Если пользователь с таким логином и паролем не найден -
  // значит данные неверные и надо их удалить
  if (count($res) < 1 || !$test) {
    //$tmppos = strrpos( $_SERVER['PHP_SELF'], '/' ) + 1;
    //$path = substr( $_SERVER['PHP_SELF'], 0, $tmppos );
    $path = '/';
    setcookie( 'autologin', '', time() - 1, $path );
    setcookie( 'username', '', time() - 1, $path );
    setcookie( 'password', '', time() - 1, $path );
    return false;
  }
4) В файле "\admin\inc\adm_boot.php" заменить строки
Code:
if ($login != strtolower($_SESSION['user']['name']) || md5($pass) != $_SESSION['user']['passw'])
                $errors .= '<li>Не верный Пароль или Логин</li>';
на строки
Code:
$test = false;
            $passw = $_SESSION['user']['passw'];
            $pos = strpos($passw, '$', 3);
            if (strpos($passw, '$1$') === 0 && CRYPT_MD5 == 1 && $pos > 0) {
                $test = (crypt( $pass, substr($passw, 0, $pos + 1)) == $passw);
            } else {
                $test = (md5( $pass ) == $passw);
            }
            if ($login != strtolower($_SESSION['user']['name']) || !$test)
                $errors .= '<li>Не верный Пароль или Логин</li>';

Отредактировано автором 30 Июл 2011

Сашка_из_Шебекино

  • Заклинатель Атома
  • Пользователь
  • 1803
  • Репутация:87 
  • Предупреждения: 0 
  • Регистрация:
    27 Мар 2011
#2
Именно поддержку или замену на бкозовские пароли? Ну то есть фаповские пароли будут продолжать работать?

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#3
Сашка_из_Шебекино, именно поддержку.

Сашка_из_Шебекино

  • Заклинатель Атома
  • Пользователь
  • 1803
  • Репутация:87 
  • Предупреждения: 0 
  • Регистрация:
    27 Мар 2011
#4
Юкозовские пароли стали работать, но фаповские отказались работать

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#5
Сашка_из_Шебекино, случайно отправил предыдущую версию. Исправил, проверяйте.

Отредактировано автором 30 Июл 2011

ARMI

  • Заклинатель Атома
  • Пользователь
  • 1858
  • Репутация:46 
  • Предупреждения: 0 
  • Регистрация:
    4 Янв 2011
#6
Wasja, хм. Интересно. Спс)

Я горжусь тем, что помогаю в развитии бесплатной CMS - AtomX

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#7
Как всегда интересные моды от Wasja) Спасибо.

Добавлено2011.08.01 14-19

А может лучше было бы выложить измененные файлы - для просты установки?

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#8
Drunya, делал еще на 1.1.6.

Сашка_из_Шебекино

  • Заклинатель Атома
  • Пользователь
  • 1803
  • Репутация:87 
  • Предупреждения: 0 
  • Регистрация:
    27 Мар 2011
#9
Почему то теперь на главной пишет ошибку
Цитата
Notice: Undefined index: author_status in /home2/modos189/public_html/modules/pages/index.php on line 142

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#10
Сашка_из_Шебекино, этот файл не затрагивался, так что проблема не в моде
Судя по ошибке - проблема в том, что скрипт не находит авторов материала (например, автор был удален из БД).

1 2
Сейчас online: 45. Зарегистрированных: 1. Гостей: 44.