PDA

Просмотр полной версии : Помогите новичку разобраться с отслеживанием сессий


savao
26.12.2010, 22:09
Добрый вечер,
Недавно начал осваивать Typo3 и возникла такая проблема, пишу сайт на котором надо создать авторизацию для пользователей и отслеживать их сессии. Прочел что Typo3 имеет встроенный механизм отслеживания (да и таблички соответствующие в базе есть). Но не могу понять как это сделать. Как выдавать странички пользователю с учетом того кто он такой. И еще, может подскажете, можно ли в Typo3 вставлять PHP скрипты без плагинов, если да, то как это сделать.
С английским не очень хорошо, так что если подскажете где это можно будет почитать на русском, то мне будет легче. Но в крайнем случае и с английским разберусь... хотя придется помучиться... :)
Зарание благодарен за помощь...

Valery Romanchev
27.12.2010, 18:50
здесь посмотрите
http://wiki.typo3.org/Extension_Developers_Guide#Using_sessions
PHP скрипты без плагинов вставлять можно с помощью экстеншенов типа page_php_content
скачать можно здесь
http://lists.typo3.org/pipermail/typo3-english/2008-April/048326.html

savao
27.12.2010, 19:09
Добрый день.
Прочел по той ссылке, которую вы мне указали, но там написано только как записать какую-то информацию о текущей сессии, но совсем не указано, как создавать нового FEUser и как потом при заполнении им формы логина запустить его сессию. Я написал формочку для регистрации, но не знаю как эти данные помещать в базу данных в таблицу fe_users. Знаю только спосб самый простой - писать с помощью PHP функции mysql_query(), но предполагаю что есть какие-то стандартные способы typo3. Так же на главной странице создал с помощью HTML формочку для логина, но как сделать так чтобі при нажатии кнопки typo3 понимал что это происходит логин юзера?
И еще такой вопрос от чайника - а чем отличаются понятия плагина и экстеншина? я как-то их воспринимал как синонимы... :)

void
27.12.2010, 22:45
Вставлять можно либо через механизм TCE, либо через TYPO3 DB API. Что-то типа $GLOBALS['TYPO3_DB']->execute_INSERTquery, в конечном счете этот вызов пройдет через DBAL и вызовет тот самый mysql_query. TYPO3 DB API в документации есть.
Экстеншен, т.е. расширение, может по-разному взаимодействовать с TYPO3. Одним из способов является регистрация нового плагина - т.е. нового типа элемента контента, который можно вставлять на страницах. Кроме плагинов, экстеншен может регистрировать бекенд-модули, таблицы в базе данных, сервисы, в т.ч. сервисы авторизации, захватывать системные хуки и проч., и проч.

sven
28.12.2010, 04:39
Добрый день.
...как создавать нового FEUser...
Для создания записи нового пользователя есть удобное расширение sr_feuser_register (ищется так (http://typo3.org/extensions/repository/?tx_terfe_pi1[view]=search&no_cache=1&tx_terfe_pi1[sword]=user+registration), можно посмотреть и другие подобные extensions). Настройка подробно описана в его инструкции (обращайте особое внимание на права доступа к создаваемым страницам регистрации, редактирования пользователей, подтверждения). Помещаете элемент с этим расширением сразу после формы регистрации.

Форму регистрации писать не было особой необходимости, достаточно создать элемент контента типа login - будет вам и форма и кнопка, по которой feuser будет логиниться. Настраивается еще проще. В настройках обоих элементов указываете одну и туже страницу (а лучше sysfolder), где будут записи ваших пользователей храниться.

savao
28.12.2010, 13:54
sr_feuser_register попробовал вместе с felogin... юзеров создает, но только возникает одна проблема - когда пытаюсь залогинится под таким юзером, то felogin выдает ошибку, типа такого юзера нет. Хотя в базе он точно есть. Так же попробовал расширение Frontend User Management (datamints_feuser) тут все то же самое, тоже felogin выдает ошибку, но странное дело, когда заходишь в базу, то видишь что время последнего посещения юзера ненулевое. Если еще раз пытаешься залогинится, то время последнего посещения меняется... Т.е. тут все таки логин происходит.
Вот из-за таких вот непоняток я и предпочитаю попробовать написать что-то свое, а не пользоваться готовым... Слишком много с готовым может возникать проблем.

dmartynenko
28.12.2010, 14:16
:eek:

Слишком много с готовым может возникать проблем.

TYPO3 не для велосипедистов ;)

Андрей Аксенов
29.12.2010, 13:11
sr_feuser_register попробовал вместе с felogin... юзеров создает, но только возникает одна проблема - когда пытаюсь залогинится под таким юзером, то felogin выдает ошибку, типа такого юзера нет. Хотя в базе он точно есть. Так же попробовал расширение Frontend User Management (datamints_feuser) тут все то же самое, тоже felogin выдает ошибку, но странное дело, когда заходишь в базу, то видишь что время последнего посещения юзера ненулевое. Если еще раз пытаешься залогинится, то время последнего посещения меняется... Т.е. тут все таки логин происходит.
Вот из-за таких вот непоняток я и предпочитаю попробовать написать что-то свое, а не пользоваться готовым... Слишком много с готовым может возникать проблем.
Может проблема с кукисами? Они просто не устанавливаются... Ответ один - искать ответы в руководствах, они там есть, убеждался в этом сам (есть хорошая пословица - смотришь в книгу, видишь фигу... :)). Часто ответ лежит в неожиданных местах...

savao
29.12.2010, 13:13
Так где конкретно искать то?
Я пробовал искать, но как-то не вижу... вижу тока эту самую фигу... :(
Если бы сам мог найти, тут бы не спрашивал.

Андрей Аксенов
29.12.2010, 13:19
поставь следующий параметр в localconf.php из typo3conf/
$TYPO3_CONF_VARS['SYS']['cookieDomain'] = '.you_domen.com';

savao
29.12.2010, 18:15
Поставил этот параметр, и после этого перестало логинится даже в backend. Но при этом и на сайте не заработало. Может тут дело в том что домена у нас пока нет и я указал:
$TYPO3_CONF_VARS['SYS']['cookieDomain'] = '.my_IP:my_Port';
После того как я это вставил, перестал работать логин и в backend.
Что я неправильно делаю?
А так, если этого значения не ставить, то у нас логин в backend работает, а на разрабатываемом сайте нет.

sven
30.12.2010, 06:06
sr_feuser_register попробовал вместе с felogin... юзеров создает, но только возникает одна проблема - когда пытаюсь залогинится под таким юзером, то felogin выдает ошибку, типа такого юзера нет. Хотя в базе он точно есть.
... Слишком много с готовым может возникать проблем.

тоже были такие проблемы, после внимательного чтения инструкции sr_feuser_register (реально хорошо написанной) и следования ее предписаниями все заработало "на ура". Лично я сталкивался с тем что неправильно укзывал права на доступ к страницам (в инструкции подчеркивается что права должны быть установлены для страницы, а не для объекта контента), еще было что из-за настройки юзер не попадал в нужную группу и т.п.

TYPO3 не для велосипедистов ;)


в общем-то да

savao
30.12.2010, 11:40
А у меня груп юзеров вообще нет. Откуда они появляются? Напрямую в базу писать или есть каки-то средства typo3?

Андрей Аксенов
30.12.2010, 13:46
Поставил этот параметр, и после этого перестало логинится даже в backend. Но при этом и на сайте не заработало. Может тут дело в том что домена у нас пока нет и я указал:
$TYPO3_CONF_VARS['SYS']['cookieDomain'] = '.my_IP:my_Port';
После того как я это вставил, перестал работать логин и в backend.
Что я неправильно делаю?
А так, если этого значения не ставить, то у нас логин в backend работает, а на разрабатываемом сайте нет.
Вот полное описание этой настройки:
Restricts the domain name for FE and BE session cookies. When setting the value to ".domain.com" (replace domain.com with your domain!), login sessions will be shared across subdomains. Alternatively, if you have more than one domain with sub-domains, you can set the value to a regular expression to match against the domain of the HTTP request. The result of the match is used as the domain for the cookie. eg. /\.(example1|example2)\.com$/ or /\.(example1\.com)|(example2\.net)$/. Separate domains for FE and BE can be set using $TYPO3_CONF_VARS['FE']['cookieDomain'] and $TYPO3_CONF_VARS['BE']['cookieDomain'] respectively.
То есть, если нужны cookie для внешнего интерфейса, то нужно установить домен в
$TYPO3_CONF_VARS['FE']['cookieDomain']
для внутреннего, в
$TYPO3_CONF_VARS['BE']['cookieDomain']
ну а то, что было установлено - это для общих сессий...
$TYPO3_CONF_VARS['SYS']['cookieDomain']

savao
30.12.2010, 13:50
Ага, спасибо, сейчас попробую...

savao
30.12.2010, 13:58
не, все равно не работает.
указал для FE, но логина так и не происходит.
Сейчас на всякий случай залез в базу, посмотрел там логин и пароль, не ошибаюсь ли я. Нет, все правильно...
Не знаю в чем дело. И страница у меня указана та самая где у меня находится этот юзер в BE, на той же странице я поставил плагин пользователи сайта. Не понимаю почему не работает.
в качестве ".domain.com" я указал ".my_IP:my_Port"

Андрей Аксенов
31.12.2010, 12:04
Странное все это... Я так понимаю, что это локальная установка TYPO3... Почему бы не поставить Introduction package (можно в той же установке) и глянуть, работает ли все там, а потом уже идти далее... Если работает - то по образу и подобию
Смотреть нужно следующие вещи:
- ставятся кукисы или нет
- разрешения на страницы для пользователей
- правильность настройки соответствующих расширений (по руководству)
- еще такая вещь, на которую не обращают внимание, правильно ли работает сама база данных - кодировка utf-8, провести сравнение таблиц ну и т.д.
... пока так

savao
31.12.2010, 13:46
Все, проблему решил.
Дело было в том что юзер логинился, но при этом ничего на это не реагировало. Как только нашел как сделать группы и указать юзеру группу, все заработало... :)
Спасибо за помощь...
И с наступающим новым годом!!!