Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Тематические форумы > TypoScript практикум

Ответ
 
Опции темы Опции просмотра
Старый 08.01.2008, 15:32   #1
Sergey M Nikitin
Administrator
 
Аватар для Sergey M Nikitin
 
Регистрация: 10.07.2007
Адрес: Moscow
Сообщений: 181
Отправить сообщение для Sergey M Nikitin с помощью ICQ Отправить сообщение для Sergey M Nikitin с помощью Skype™
По умолчанию Сессия из глобальной переменной [ЗАДАЧА РЕШЕНА]

[ЗАДАЧА РЕШЕНА]
Столкнулся с такой проблемой
Решил внедрить в свой TYPO проект SWF upload модуль.
Модуль работает по принципу AJAX, но проблема заключается в том что SWF файл не передает скрипту данные о сессии, что очень важно, есть ли какой-нибудь способ передать TYPO'е ключ сессии, чтобы он ее воспринимал на том же уровне как и ключ из COOKIE.

Что пробовал
1. Порылся в классах авторизации и наткнулся на FE_SESSION_KEY, по идеи он используется для переноса сессии с одного домена на другой но в моем случае должен был работать - не работает

2. Там же встретил проверку _GP("ftu") при передачи - не работает

3. Там же встретил проверку _GP("fe_typo_user") при передачи - не работает

4. Множество хаков - типа подмена $_COOKIE['fe_typo_user'] тоже не дало результатов, кто найдет решение, ОГРОМНОЕ СПАСИБО и модуль пользовательской загрузки в подарок с TS настройщиком и прочими вкусностями.
[РЕШЕНИЕ#2 FE_SESSION_KEY (works !!!) ]
Чтобы получить FE_SESSION_KEY дальше через USER_INT на страницу
PHP код:
FE_SESSION_KEY $GLOBALS["TSFE"]->fe_user->id.
"-".md5($GLOBALS["TSFE"]->fe_user->id.
"/".$GLOBALS["TYPO3_CONF_VARS"]["SYS"]["encryptionKey"]; 
[РЕШЕНИЕ#1 ХАК]

Делаем не большой хак (кстати я думаю его можно сделать и другим способом "плугином"), но так просто нагляднее.

в index.php в корне добавляем перед инклюдом index_ts.php, можно добавить проверку и длину и символов, но это не принципиально.
PHP код:
if (isset($_POST['fe_typo_user'])) {
    
$_COOKIE['fe_typo_user'] = $_POST['fe_typo_user'];
}elseif (isset(
$_GET['fe_typo_user'])){
    
$_COOKIE['fe_typo_user'] = $_GET['fe_typo_user'];
}

require (
PATH_tslib.'index_ts.php'); 
что получается: если вдруг нам передадут методом GET или POST переменную fe_typo_user то мы ее подменяем в COOKIE тем самым эмулируем то что swf клиент работает с куками.

дальше самое главное в чем в в общем и была проблема это ses_hashlock

структура таблицы fe_sessions

Код:
ses_id  	varchar(32)   	Нет   	    	 
ses_name 	varchar(32) 	Нет  	  	 
ses_iplock 	varchar(39) 	Нет  	  	 
ses_hashlock 	int(11) 	Нет  	0  	 
ses_userid 	int(11) 	Нет  	0  	 
ses_tstamp 	int(11) 	Нет  	0  	 
ses_data 	blob 	Нет  	  	 
ses_permanent 	tinyint(1) 	Нет  	0
ses_hashlock служит для блокировки сессии в зависимости от браузер, так как данные передаются через swf плугин, то он отправляет пустой USER_AGENT, в результате обработчик сессии просто не может найти эту запись в базе так как ищет совершенно другой ses_hashlock

что сделать:
Код:
$TYPO3_CONF_VARS['FE']['lockHashKeyWords'] = 'useragent';

Присваиваем пустую строку в localconf.php.
$TYPO3_CONF_VARS['FE']['lockHashKeyWords'] = '';
либо меняем значение в инсталяторе как вам удобнее

УРА !!! ВСЕ РАБОТАЕТ !!!
__________________
nikitinsm.ru

Последний раз редактировалось Sergey M Nikitin; 09.01.2008 в 11:40 Причина: [ЗАДАЧА РЕШЕНА#2]
Sergey M Nikitin вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача переменной в Ts? ups Общие вопросы 3 28.07.2006 17:07
Пробел в значении переменной Lato Sergey Общие вопросы 0 30.08.2005 10:34


Часовой пояс GMT +4, время: 14:45.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория