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

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 11.01.2011, 20:39   #1
Lucifer
Senior Member
 
Аватар для Lucifer
 
Регистрация: 01.07.2008
Сообщений: 392
По умолчанию "Правильная" организация аякса на typo3

Думаю сейчас, как правильнее организовать ajax запросы в своих расширениях наиболее "красиво". А конкретнее, по какому адресу должен вызываться мой скрипт:
1. http://mysite/typo3conf/ext/myExt/pi...jax.php?params
2. http://mysite/?type=myType&otherParametrs...
3. http://mysite/?id=currentId&tx_myExt...otherParametrs...
4. http://mysite/?id=myExtId&myExtParametrs...
5. как то еще? )

Такие вот варианты надумал. Хотелось бы знать, кто как считает оптимальнее?
Lucifer вне форума   Ответить с цитированием
Старый 11.01.2011, 22:12   #2
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию

есть два штатных способа

- eID скрипт (примеры можно посмотреть в экстеншене comments)
- c помощью type и TS кода типа

someThing = PAGE
someThing {
typeNum = 1056
config {
disableAllHeaderCode = 1
}
10 = USER_INT
10 {
userFunc = ...
}
}
__________________
Веб-студия ТТЛАБ
www.ttlab.ru
Valery Romanchev вне форума   Ответить с цитированием
Старый 13.01.2011, 22:24   #3
Lucifer
Senior Member
 
Аватар для Lucifer
 
Регистрация: 01.07.2008
Сообщений: 392
По умолчанию

eID - очень удобный способ, именно то, что мне было надо. Спасибо!
Lucifer вне форума   Ответить с цитированием
Старый 12.12.2011, 15:53   #4
anweb
Продвинутый
 
Регистрация: 02.05.2007
Сообщений: 40
По умолчанию

Есть ли отличия при обращении к базе данных при использовании eID ? При таком раскладе не работает:
PHP код:
<?php
if (!defined ('PATH_typo3conf')) die ('Could not access this script directly!');
tslib_eidtools::connectDB();
$a1 t3lib_div::_POST('a1');
$a2 t3lib_div::_POST('a2');
$res $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','my_table','a1='.$a1);
$tRows = array();
$this->internal['currentRow'] = '';
while (
$this->internal['currentRow'] = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
    
$tRows[] = $this->internal['currentRow'][$a2];
}
$content implode('',$tRows);
echo 
$content;
?>
anweb вне форума   Ответить с цитированием
Старый 12.12.2011, 17:23   #5
Dmitry Dulepov
Продвинутый
 
Аватар для Dmitry Dulepov
 
Регистрация: 28.04.2010
Сообщений: 73
По умолчанию

Цитата:
Сообщение от anweb Посмотреть сообщение
PHP код:
<?php
$a1 
t3lib_div::_POST('a1');
$a2 t3lib_div::_POST('a2');
$res $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','my_table','a1='.$a1);
Да у вас SQL-инъекция, батенька...
Dmitry Dulepov вне форума   Ответить с цитированием
Старый 12.12.2011, 17:28   #6
anweb
Продвинутый
 
Регистрация: 02.05.2007
Сообщений: 40
По умолчанию

Спасибо, что подсказали, Дмитрий! А как правильно то написать?
anweb вне форума   Ответить с цитированием
Старый 12.12.2011, 17:53   #7
anweb
Продвинутый
 
Регистрация: 02.05.2007
Сообщений: 40
По умолчанию

Заработало вот так:
PHP код:
<?php
if (!defined ('PATH_typo3conf')) die ('Could not access this script directly!');
tslib_eidtools::connectDB();
$a1 '"'.t3lib_div::_POST('a1').'"';
$a2 t3lib_div::_POST('a2');
$query 'SELECT * FROM my_table WHERE a1='.$a1;
$res mysql_query($query);
while (
$rows mysql_fetch_assoc($res)) {
    echo 
$rows[$a2];
}
?>
На самом ли деле здесь есть проблема с безопасностью? Как её решить?
anweb вне форума   Ответить с цитированием
Старый 13.12.2011, 12:21   #8
Dmitry Dulepov
Продвинутый
 
Аватар для Dmitry Dulepov
 
Регистрация: 28.04.2010
Сообщений: 73
По умолчанию

К сожалению, есть. Передаете параметр как:

Код:
1" UNION SELECT BENCHMARK(5000000,ENCODE('MSG','by 5 seconds')),null) FROM fe_users --
и ваш сервер умер надолго. Конечно, надо подобрать количество параметров в этом запросе таким, как число колонок в вашей таблице, но это совсем не сложно.

Правильно так:

PHP код:
$a1 t3lib_div::_POST('a1'); 
$a2 t3lib_div::_POST('a2'); 
$query 'SELECT * FROM my_table WHERE a1=' $GLOBALS['TYPO3_DB']->fullQuoteStr($a1'my_table'); 
Dmitry Dulepov вне форума   Ответить с цитированием
Старый 13.12.2011, 12:26   #9
anweb
Продвинутый
 
Регистрация: 02.05.2007
Сообщений: 40
По умолчанию

Спасибо большое, Дмитрий!
anweb вне форума   Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
API ядра TYPO3 - перевод официального руководства Андрей Аксенов Мастер-класс 6 26.04.2016 07:45
Настройки параметров ImageMagick для TYPO3 на FreeBSD и Linux Valery Romanchev Мастер-класс 9 25.06.2013 22:38
Ищу фриланс для настройки сайта в TYPO3 (организация) -Bt- Работа и заказы / Job Offer and Request 1 07.11.2010 23:50
Ищу фриланс для перевода сайта в TYPO3 (коммерческий, организация) -Bt- Работа и заказы / Job Offer and Request 1 25.05.2009 16:50
Организация коммерческой поддержки TYPO3? Valery Romanchev Организационные вопросы и встречи TUG 6 18.07.2005 17:54


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


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

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