Вход без пароля.

Автор warobushek, 21 декабря 2010, 13:08:41

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

warobushek

Здравствуйте.
предположим, что пользователь идентифицируется некоторым образом без ввода логина и пароля
как его можно залогинить программно?

Drakonsa


warobushek

#2
Есть другой сайт, на котором точно известно что это за пользователь. Но там пароли и логины не хранятся
Авторизуется по некоторому хешу


Сделал следующим образом

                        //Данные этого пользователя
                        $request = db_query("
                            SELECT passwd, ID_MEMBER, ID_GROUP, lngfile, is_activated, emailAddress, additionalGroups, memberName, passwordSalt
                            FROM {$db_prefix}members
                            WHERE ID_MEMBER = {$d[0]}
                            LIMIT 1", __FILE__, __LINE__);
                       
                        if(FALSE !== ($user_settings = mysql_fetch_assoc($request))) {
                            //активный ли пользователь?
                            if($user_settings['is_activated']!=1) fatal_lang_error('tczh_not_activated_user');
                           
                           
                           
                            require_once($sourcedir.'/Subs-Auth.php');
                            loadLanguage('Login');
                           
                            $_SESSION['login_url'] = $boardurl.'/index.php';
                            $ID_MEMBER = $user_settings['ID_MEMBER'];
                           
                            // Бам!  Установка cookie и сессии
                            setLoginCookie(60 * $modSettings['cookieTime'], $user_settings['ID_MEMBER'],
                                           sha1($user_settings['passwd'] . $user_settings['passwordSalt']));
                           
                            $user_info['is_guest'] = false;
                            $user_settings['additionalGroups'] = explode(',', $user_settings['additionalGroups']);
                            $user_info['is_admin'] = $user_settings['ID_GROUP'] == 1 || in_array(1, $user_settings['additionalGroups']);
                           
                            // Вы забанены?
                            is_not_banned(true);
                           
                            // Вы ведь залогинились?
                            updateMemberData($ID_MEMBER, array('lastLogin' => time(), 'memberIP' => '\'' . $user_info['ip'] . '\'', 'memberIP2' => '\'' . $_SERVER['BAN_CHECK_IP'] . '\''));
                           
                            // Удалить сессию гостя
                            db_query("
                                DELETE FROM {$db_prefix}log_online
                                WHERE session = 'ip$user_info[ip]'
                                LIMIT 1", __FILE__, __LINE__);
                            $_SESSION['log_time'] = 0;
                           
                            // Просто разлогинить обратно, если форум находится на обслуживании и пользователь не админ
                            if (empty($maintenance) || allowedTo('admin_forum'))
                                redirectexit('action=login2;sa=check;member=' . $ID_MEMBER, $context['server']['needs_login_fix']);
                            else
                                redirectexit('action=logout;sesc=' . $sc, $context['server']['needs_login_fix']);
                        }
                        mysql_free_result($request);

Основа в залогинивании - последовательный вызов setLoginCookie и redirectexit

AndryG

Доброго.
  У меня стоит похожая задача, но на другой версии форума.

  Поведайте, пжлст, подробней, на каком этапе рабта скрипта, вы запускали свою авторизаци ?