-
Публикации
1 592 -
Зарегистрирован
-
Посещение
-
Дней в лидерах
12
Сообщения, опубликованные пользователем IT-Security
-
-
Смотрим в модах.
-
Приношу извинения за задержку, были проблемы со здоровьем
А теперь к делу!
Думаю, что у каждого хотя-бы раз в жизни возникало желание прикрутить какой-то модуль/PHP код к главной странице.
Но была проблема с тем, как это сделать.
Вы НАВЕРНЯКА пробовали пробовали вставить PHP код в шаблон и были сильно удивлены почему он не сработал?
А потом применили хак на eval и тут уже задумались о безопасности
Теоритически с установленным хаком на eval ЛЮБОЙ человек который получит доступ к редактированию шаблонов может взломать полностью сайт. Дабы не допустить даже теоритической дырки научу Вас как НЕ использовать php код, но вставлять его в шаблон
Итак смотрим пример.
Есть у нас код:
<?php echo "Hello, world!"; ?>
И хотим мы его вставить на главную. Открываем index.php и ищем:$tpl->load_template ( 'main.tpl' );
Ниже пишем:include (ROOT_DIR."/путь_к_файлу.php");
Открываем сайт - вуаля - видим вывод. Вот только одна проблема....Он над дизайном...Незадача, правда?Решаемо! Смысл в том, что шаблонизатор DLE устроен так, что берёт шаблон main.tpl, производит в нём замены и потом выводит его на экран. Нам нужно НЕМНОГО изменить нашу программку. А именно:В начало скрипта пишем: $my_mod_buffer = ''; Получаем примерно такое: <?php $my_mod_buffer = ''; echo "Hello, world!"; ?>
Теперь нам нужно заменить ВСЕ echo в нашей программе на:$my_mod_buffer.= "код"; Тоесть получаем: <?php $my_mod_buffer = ''; $my_mod_buffer.= "Hello, world!"; ?>
Далее идём в index.php и после include (ROOT_DIR."/путь_к_файлу.php"); пишем:$tpl->set("{my_mod_buffer}", $my_mod_buffer);
Тэг {my_mod_buffer} необходимо ЗАРАНЕЕ поставить в main.tpl! Тоесть получается примерно такое в index.php:$tpl->load_template ( 'main.tpl' ); include (ROOT_DIR."/my_modules/my_super_mod.php"); $tpl->set("{my_mod_buffer}", $my_mod_buffer);
ВНИМАНИЕ!Переменная $my_mod_buffer для каждого модуля индивидуальна!
Жду вопросов/критики.
-
Если не Adult - можно организовать хостинг...
Потом в случае чего перенесём на VPS/Dedicated. Хостинг без апача, рассчитанный на высокую нагрузку.
-
Установить его по новой видимо.
Ссылочку на сайт будьте добры предоставить.
-
Просто напросто я не рассчитывал, что буду лежать с температурой 38 изредка забегая в аську, чтобы извинится перед заказчиками за срыв сроков =/
-
В другом. Не успел сегодня.
-
Завтра напишу мини-статью на тему вставки кода.
-
Если php код не вырезается в админке (не проверял), то при его выполнении любой человек, который захватит доступ администратора или получит доступ к шаблонам через веб-интерфейс как нефиг делать вставит в код шелл и сделает с сайтом/сервером что угодно. НАМНОГО ПРОЩЕ немного переписать пхп код, чтобы НЕ НУЖНО было использовать его в шаблонах.
-
O_O
И по какому критерию это должно определятся?
-
Это не хак, а обновление. И то, которому сто лет.
-
Вынесите...Или на дедик или можно ещё MySQL оставить где он есть, а сам сайт перенести на VPS или наоборот.
VPS хорош тем, что его можно расширить до дедика впоследствии.
-
=)
$db->safesql = mysql_real_escape_string =)
-
Не замечал падения скорости на nginx + fast_cgi, если честно.
Возможно просто не было задач, которые бы тормозили.
Но вообще:
<!-- Время генерации страницы: 0.0046 секунд --> (Свой движок, 3 запроса)
-
Не встречался просто с такой задачей. Возможно и можно на JS.
Я делал на переднем плане прозрачную картинку с углами, а на заднем саму картинку.
-
В шаблон вставьте...
-
Тогда тут не обойдёшься фиксированным изображением с закруглёнными краями и Вашим изображением фоном =(
-
Используйте поиск!
-
Единственная проблема - демо на версии ДЛЕ 5.7 если не ошибаюсь. Но для меня как программиста совершенно не проблема сделать работоспособной под 7.5
Стучите в аську кто интересуется
-
Не путайте видео-плеер и flash-плеер.
Это совершенно разные вещи.
-
Имею на руках альтернативную баннерную систему.
Возможности:
- Добавление баннерных мест
- Добавление баннеров (Текстовые, графические)
- Ограничение по дате/кликам/показам на баннер
- Работа через JS (дада..Все баннеры вызываются через JS)
-
Приведи мне пример IPB2, который живёт на шареде с большей посещаемостью, чем у ТС =)) Со всеми включенными опциями он даже не всегда запустится из-за нехватки памяти)))Кстати есть ещё идея - может тут ещё и поисковые роботы виноваты и создают лишнюю нагрузку?
А насчёт движка (Не в обиду автору), но в таком кастрированном функционале (на фоне создания бизнес-проектов) тормозить нечему.
ТС - отруби моментальное обновление счётчика новостей, вруби кэширование, покрути настройки.
Всё это сделано было?
-
Да и пост типа как вчерашний
-
Ваше решение подходит ТОЛЬКО для баз с таким же синтаксисом.
Далеко ходить не нужно - у MSSQL нету Limit. Тоесть все запросы связанные с limit надо переписывать.
-
Вы себе представляете переписывать ВСЕ запросы в DLE?Да и как потом человек обновляться будет?Думайте головой то. Был бы у него свой собственный движок - ещё можно было бы на такое пойти.
MySQL заменить на маршрутизатор СуБД и сделать в нём вместо query() функции select, insert, update, delete.
Но в DLE человеку ДАЖЕ если он на такое пойдёт или нельзя будет обновляться или придётся при каждом обновлении такую процедуру проделывать.
[Hint] Долой PHP в шаблонах :)
в Готовые Моды, Хаки, Локализаторы, Советы
Опубликовано:
1) Хак - замена в коде. Бывают монолитные системы. тоесть целостные...Это DLE, так как в нём фиксированы модули.
И когда что-то в коде меняется, то это называется хак.
Впринципе даже в модульных системах замена кода системы - это хак.
2) Eval - функция, выполняющая всё, что она видит. Если передать в eval строку, содержащую PHP-код, то она его выполнит
3) На что именно ставить такие права?
4) Первый в случае отсутствия файла выдаст fatal error, второй нет
5) Перестроить код так, чтобы он нормально выводил.