Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Архив » Движок phpBB2 Elysium by John Warner


Движок phpBB2 Elysium by John Warner

Сообщений 121 страница 140 из 189

121

Ку всем.
Я тут немного переписываю движок одного сайта, и решил туда добавить то, чего там нет, а именно - поддержку шаблонов из phpBB2.

Столкнулся с проблемой "Fatal error: Call to a member function set_filenames() on a non-object in ./details/includes/frontpage.php on line 23"

То есть, template.php не хочет работать. Я когда-то это успешно решил - но забыл, как именно я это сделал :(

Собственно, ругается движок сайта на код навроде этого:

Код:
$template->set_filenames(array(
	'page_header' => 'PgHeader.' . $tplEx,
(много такого же добра)
	'page_simple_footer' => 'PgSimpleFooter.' . $tplEx
));

Отсюда вопрос: может, кто-то знает решение этой проблемы?
template.php подключен, functions.php тоже.

+1

122

John Warner
Видимо переменная $template не инициализирована. Где она объявляется в коде?

0

123

Alex_63
В phpBB2 она объявляется в блоке функций functions.php, причём в самих функциях.
У меня уже и на входе.

0

124

John Warner
Может она где-то переобъявляется или обнуляется?

0

125

Alex_63
Наверное.
Занимаюсь поиском.

+1

126

А где можно посмотреть на сие чудо?
Раньше мне нравилась вторая версия phpbb вполне - лёгкая, удобная.

0

127

Михаил Орлов
Вот:
аскиз-пресса.рф

0

128

John Warner написал(а):

аскиз-пресса.рф

Ссылка ведёт на укорачиватель ссылок, на сам сервис то бишь :rolleyes:
А если вбить вручную "аскиз-пресса.рф" - то просто какой-то сайт. Не вижу никакой ссылки на форум, уж тем более на движке phpbb 2 (т.к. я о нём спрашивал, ведь и тема называется "Движок phpBB2 Elysium by John Warner", вот и захотел на модификацию данную движка, стало очень интересно).

ЗЫ. Сайт-то сам норм, новостной блог вроде как, не так ли?

Отредактировано Михаил Орлов (Ср, 6 Май 2020 23:33:42)

0

129

Михаил Орлов написал(а):

А если вбить вручную "аскиз-пресса.рф" - то просто какой-то сайт.

Ага, им и занимаюсь.

Михаил Орлов написал(а):

Движок phpBB2 Elysium by John Warner

В Сети сейчас его нет нигде. Он только у меня на локальном сервере сейчас есть.

Михаил Орлов написал(а):

Сайт-то сам норм, новостной блог вроде как, не так ли?

Сайт только на вид как будто бы нормальный. Внутри это так наз. "Индусский код".

0

130

John Warner написал(а):

В Сети сейчас его нет нигде. Он только у меня на локальном сервере сейчас есть.

Ясно. А можешь заскринить и отправить в ЛС, если в общий доступ не желательно?

John Warner написал(а):

Сайт только на вид как будто бы нормальный. Внутри это так наз. "Индусский код".

И это немаловажно. Сейчас и вполне крупных проектов навалом таких, что чёрт голову сломит там, плюс загружаются ну очень долго. А у тебя прям целый портал новостной :) Сам делал или заказывал?

John Warner написал(а):

Внутри это так наз. "Индусский код".

Главное, что админу было удобно.

0

131

Михаил Орлов написал(а):

А можешь заскринить и отправить в ЛС, если в общий доступ не желательно?

Не понял, тебе нужен код движка или тупо фотки?

Михаил Орлов написал(а):

Сам делал или заказывал?

Нет, не я делал, меня назначили на уже готовый проект)))
Я бы ТАКОЕ шайзе не сделал бы никогда)))

Михаил Орлов написал(а):

Главное, что админу было удобно.

Беда в том, что при малейшей неисправности или изменениях на серваке сайт может загнуться - и тогда его проще будет написать заново, чем чинить.

+3

132

John Warner написал(а):

Ку всем.
Я тут немного переписываю движок одного сайта, и решил туда добавить то, чего там нет, а именно - поддержку шаблонов из phpBB2.

Писал выше, и вот что нашёл:

Добавил в index.php строку, и характер ошибок изменился.
Строка:

Код:
init_userprefs($userdata);
Скриншот

https://i.imgur.com/sBtblzI.jpg

Ушёл спать.
Думать буду завтра.

0

133

Задолбался перебирать сайты на своём Денвере, субдомены на narod.rus.
Накропал каталогизатор, закинул его на субдомен catalogue.narod.rus, но было уныло вручную заносить данные сайтов :(

Но лень, как известно, двигатель прогресса!
В опчем я обошёлся другими методами.

Фото

https://i.imgur.com/Vm8tKQG.jpg

Из кода самого Денвера выдернул сайтопоказывательный скрипт, малость его переписал - и вуаля.

Вот сам код:

./index.php

Код:
<?php
define('IN_CATALOGUE', true);

$site_root = './';
$phpEx = '.php';
$tplEx = '.tpl';
$tpl_root = $site_root . 'details/templates/'; 
$incl_root = $site_root . 'details/includes/'; 


include ($incl_root . 'page' . $phpEx);

exit;
?>

./details/includes/sitelist.php

Код:
<?php
if ( !defined('IN_CATALOGUE') )
{
	die("Hacking attempt");
}
// Original idea by: Dmitry Boykov (http://forum.dklab.ru/users/DmitryBoykov/)
$file = file('/usr/local/apache/conf/vhosts.conf');
foreach ($file as $line)
{
	if (preg_match('/^[^#]* <VirtualHost \s+ [^:>]+ (?::(\d+))?/six', $line, $p)) 
{
	$port = @$p[1];
}
	if (preg_match('/^[^#]* ServerName \s+ "?([^"]*)"?/six', $line, $p))
{
	if ($port == 443) continue;
	$dom = preg_replace('/^www\./si', '', $p[1]);
	$dom .= $port && $port != 80? ":$port" : "";
	$domains[$dom] = join(".", array_reverse(preg_split('/\./', $dom)));
}
}

echo "<ul>";

asort($domains);
$prev = false;
$counter = "0";
foreach ($domains as $dom=>$parts) 
{
	if (!$prev || !preg_match('/' . preg_quote($prev, '/') . '$/si', $dom)) 
	{
if (stristr($dom, 'narod.rus') == true)
{
	$prev = $dom;
}
	}
	else
	{
if (stristr($dom, 'narod.rus') == true)
{
	echo"	<li>";
	$result_row = "{$dom}";
	print "<a href=\"http://{$dom}\" target=\"_blank\" alt='Субдомен' title='Субдомен'>" . $result_row . "</a>";
	echo"	</li>";
	$counter = $counter + 1;
}
	}
}
echo"</ul>";

echo '<p>Всего сайтов: ' . $counter . '</p>';

?>

./details/includes/page.php

Код:
<?php
if ( !defined('IN_CATALOGUE') )
{
	die("Hacking attempt");
}

/*	include ($incl_root . 'simple_html_dom' . $phpEx);	*/
include ($tpl_root . 'page_header' . $tplEx);
include ($incl_root . 'sitelist' . $phpEx);
include ($tpl_root . 'page_footer' . $tplEx);

?>

Также в каталог ./details/includes/ закинул известную либу simple_html_dom.php, которая у меня выдирает метатеги - но от неё умирает Апач ибо на народе у меня аж 213 сайтов. Поэтому это пока отключено.

Также имеются шаблоны

./details/templates/page_header.tpl
./details/templates/page_footer.tpl

которые делают дизайн, пусть и примитивный - но зато разделяют дизайн и код. Это, кстати, к вопросу о том, стал ли бы я делать кашу, как на обслуживаемом мною сайте, если я даже на столь простую фигню сделал всё как надо, ибо у меня есть готовый уже давно шаблон для любого сайта.
Приводить их тут не буду, они просто хтмл.

Такая вот загогулина.
Если кому-то надо - вот полный архив на Яндех диске.

Так как я лишь адаптировал по месту - никаких копирайтов нету, кроме тех, что указаны не мною.

С уважением.
ЗЫ Указанный копирайт на картинке - от дизайна, я взял то, что когда-то делал; сам каталогизатор написан сегодня  :flag:

+1

134

О моём шаблоне:
В корневой каталог сайта я обычно кладу такую систему:
./details/
./details/css/ - здесь css
./details/fonts/ - шрифты
./details/img/ - картинки от дизайна
./details/includes/ - сам движок сайта, php-файлы
./details/scripts/ - жабоскрипт и прочая, скрипты и либы
./details/templates/ - шаблон в случае, если не предусматривается смена шаблонов
./details/tmp/ - временная папка на время настройки/разработки, для всякого рода неиспользуемых постоянно кишков и версий файлов, типа мусорка

В случае изменяемых дизайнов, добавляются

./styles/%design_1_name%/
./styles/%design_2_name%/
./styles/%design_3_name%/

где сидят шаблоны дизайнов.
Если у сайта есть куча картинок и файлов - добавляются
./files/ - каталог файлов
./pics/ - каталог картинок

Также, если сайт примитивно работает от данных в файлах - добавляем это:

./pages/ - там сидят хтмл файлы с расширением .tpl, к которым обращается движок и берёт из них текст.

Очень удобная система - привыкаешь, что всё всегда на месте, она очень дисциплинирует.

Скачать zip-архив со структурой с Яндех диска.

ЗЫ Помимо написанных мною, у меня на Денвере есть перепаханные под такую структуру движки S2 и phpBB :)

+1

135

Я тут тестовый сайтец от контента почистил до голого движка и упаковал зипом.
Может показывать файлы из каталога ./pages/ по обращению ./?p=index, дизайн сами сварганите.
Поддерживает шаблоны, админки не имеет.

Иллюстрация

https://i.imgur.com/uoG1IPh.jpg

Надо кому?
Скачать с Яндех.Диска.

ЗЫ Тексты (Lorem Ipsum) тупо наворованы в Сети, выкините всё ненужное сами.

0

136

Всем превед!
Разобрался я с шаблонами.
Оказалось, я его не объявил как надо :)
В исходном phpBB2 это делается несколько неявным способом, пришлось порыть код - и я нашёл свои косяки.

Сейчас сайт являет собой жалкое зрелище, покуда я перепахиваю движок на предмет разделения кода и шаблона.
Но процесс идёт.

0

137

Основной шаблон у меня заработал.
На удивление, даже ошибок особых нет, кроме одной вещи: проковырялся столько времени, столкнулся с ещё одной проблемой.
Изначальный концепт "движка" сайта - "лепи чего тебе надо прямо в это место кода", плюс приcранные внешние модули, и всё правится из админки CKEdtor'ом.
Проблема сейчас в том, что в код налепили кусков хтмл и пхп из отдельных файлов, и я придумываю, как сделать вставлялку этих кусков в шаблон.

0

138

Ну всё.
Заголовок  и подвал у меня работают, со всеми функциями, через шаблоны.
Чиню индекс.

0

139

Ку всем!
Продолжаю работу над сайтом.
Раскукожил дистрибутив punBB, ибо вспомнил там прикольную фичу - централизованный задатчик URL'ов.

Пример:

Файл forum_urls.php

Дофига кода
Код:
<?php
/**
 * Regular URL scheme.
 *
 * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
 * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
 * @package PunBB
 */


// Make sure no one attempts to run this script "directly"
if (!defined('FORUM'))
	exit;

// These are the regular, "non-SEF" URLs (you probably don't want to edit these)
$forum_url = array(
	'change_email'	=>	'profile.php?action=change_email&amp;id=$1',
	'change_email_key'=>	'profile.php?action=change_email&amp;id=$1&amp;key=$2',
	'change_password'=>	'profile.php?action=change_pass&amp;id=$1',
	'change_password_key'	=>	'profile.php?action=change_pass&amp;id=$1&amp;key=$2',
	'delete_user'	=>	'profile.php?action=delete_user&amp;id=$1',
	'delete'=>	'delete.php?id=$1',
	'delete_avatar'	=>	'profile.php?action=delete_avatar&amp;id=$1&amp;csrf_token=$2',
	'edit'	=>	'edit.php?id=$1',
	'email'	=>	'misc.php?email=$1',
	'forum'	=>	'viewforum.php?id=$1',
	'forum_rss'=>	'extern.php?action=feed&amp;fid=$1&amp;type=rss',
	'forum_atom'	=>	'extern.php?action=feed&amp;fid=$1&amp;type=atom',
	'forum_subscribe'=>	'misc.php?forum_subscribe=$1&amp;csrf_token=$2',
	'forum_unsubscribe'=>	'misc.php?forum_unsubscribe=$1&amp;csrf_token=$2',
	'help'	=>	'help.php?section=$1',
	'index'	=>	'index.php',
	'index_rss'=>	'extern.php?action=feed&amp;type=rss',
	'index_atom'	=>	'extern.php?action=feed&amp;type=atom',
	'login'	=>	'login.php',
	'logout'=>	'login.php?action=out&amp;id=$1&amp;csrf_token=$2',
	'mark_read'=>	'misc.php?action=markread&amp;csrf_token=$1',
	'mark_forum_read'=>	'misc.php?action=markforumread&amp;fid=$1&amp;csrf_token=$2',
	'new_topic'=>	'post.php?fid=$1',
	'new_reply'=>	'post.php?tid=$1',
	'opensearch'	=>	'misc.php?action=opensearch',
	'post'	=>	'viewtopic.php?pid=$1#p$1',
	'profile_about'	=>	'profile.php?section=about&amp;id=$1',
	'profile_identity'=>	'profile.php?section=identity&amp;id=$1',
	'profile_settings'=>	'profile.php?section=settings&amp;id=$1',
	'profile_avatar'=>	'profile.php?section=avatar&amp;id=$1',
	'profile_signature'=>	'profile.php?section=signature&amp;id=$1',
	'profile_admin'	=>	'profile.php?section=admin&amp;id=$1',
	'quote'	=>	'post.php?tid=$1&amp;qid=$2',
	'register'=>	'register.php',
	'report'=>	'misc.php?report=$1',
	'request_password'=>	'login.php?action=forget',
	'rules'	=>	'misc.php?action=rules',
	'search'=>	'search.php',
	'search_advanced'=>	'search.php?advanced=1',
	'search_resultft'=>	'search.php?action=search&amp;keywords=$1&amp;author=$3&amp;forum=$2&amp;search_in=$4&amp;sort_by=$5&amp;sort_dir=$6&amp;show_as=$7',
	'search_results'=>	'search.php?search_id=$1',
	'search_new'	=>	'search.php?action=show_new',
	'search_new_results'	=>	'search.php?action=show_new&amp;forum=$1',
	'search_recent'	=>	'search.php?action=show_recent',
	'search_recent_results'	=>	'search.php?action=show_recent&amp;value=$1',
	'search_unanswered'=>	'search.php?action=show_unanswered',
	'search_subscriptions'	=>	'search.php?action=show_subscriptions&amp;user_id=$1',
	'search_forum_subscriptions'	=>	'search.php?action=show_forum_subscriptions&amp;user_id=$1',
	'search_user_posts'=>	'search.php?action=show_user_posts&amp;user_id=$1',
	'search_user_topics'	=>	'search.php?action=show_user_topics&amp;user_id=$1',
	'subscribe'=>	'misc.php?subscribe=$1&amp;csrf_token=$2',
	'topic'	=>	'viewtopic.php?id=$1',
	'topic_rss'=>	'extern.php?action=feed&amp;tid=$1&amp;type=rss',
	'topic_atom'	=>	'extern.php?action=feed&amp;tid=$1&amp;type=atom',
	'topic_new_posts'=>	'viewtopic.php?id=$1&amp;action=new',
	'topic_last_post'=>	'viewtopic.php?id=$1&amp;action=last',
	'unsubscribe'	=>	'misc.php?unsubscribe=$1&amp;csrf_token=$2',
	'user'	=>	'profile.php?id=$1',
	'users'	=>	'userlist.php',
	'users_browse'	=>	'userlist.php?show_group=$1&amp;sort_by=$2&amp;sort_dir=$3&amp;username=$4',
	'page'	=>	'&amp;p=$1',
	'moderate_forum'=>	'moderate.php?fid=$1',
	'get_host'=>	'moderate.php?get_host=$1',
	'move'	=>	'moderate.php?fid=$1&amp;move_topics=$2',
	'open'	=>	'moderate.php?fid=$1&amp;open=$2&amp;csrf_token=$3',
	'close'	=>	'moderate.php?fid=$1&amp;close=$2&amp;csrf_token=$3',
	'stick'	=>	'moderate.php?fid=$1&amp;stick=$2&amp;csrf_token=$3',
	'unstick'=>	'moderate.php?fid=$1&amp;unstick=$2&amp;csrf_token=$3',
	'moderate_topic'=>	'moderate.php?fid=$1&amp;tid=$2',
	'admin_index'	=>	'admin/index.php',
	'admin_bans'	=>	'admin/bans.php?sort_by=1',
	'admin_categories'=>	'admin/categories.php',
	'admin_censoring'=>	'admin/censoring.php',
	'admin_extensions_manage'=>	'admin/extensions.php?section=manage',
	'admin_extensions_hotfixes'=>	'admin/extensions.php?section=hotfixes',
	'admin_forums'	=>	'admin/forums.php',
	'admin_forums_forum'	=>	'admin/forums.php#forum$1',
	'admin_groups'	=>	'admin/groups.php',
	'admin_loader'	=>	'admin/loader.php',
	'admin_reindex'	=>	'admin/reindex.php',
	'admin_settings_setup'	=>	'admin/settings.php?section=setup',
	'admin_settings_features'=>	'admin/settings.php?section=features',
	'admin_settings_content'=>	'admin/settings.php?section=content',
	'admin_settings_email'	=>	'admin/settings.php?section=email',
	'admin_settings_announcements'	=>	'admin/settings.php?section=announcements',
	'admin_settings_registration'	=>	'admin/settings.php?section=registration',
	'admin_settings_communications'	=>	'admin/settings.php?section=communications',
	'admin_settings_maintenance'	=>	'admin/settings.php?section=maintenance',
	'admin_prune'	=>	'admin/prune.php',
	'admin_ranks'	=>	'admin/ranks.php',
	'admin_reports'	=>	'admin/reports.php',
	'admin_users'	=>	'admin/users.php'
);
?>

Таким мухтаром, помимо дефайнов, можно задать много чего централизованно - чего я и добиваюсь.
Я задолбался в каждом файле указывать или объявлять ссылки на всякое, типа переменных и файлов шаблонного движка.
Хочу вкукожить.
ЗЫ В моём случае это будет что-то типа этого:

Снова дофига кода
Код:
<?php
/**
 * Regular URL scheme.
 *
 * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
 * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
 * @package PunBB
 */


// Make sure no one attempts to run this script "directly"
if (!defined('FORUM'))
	exit;

// These are the regular, "non-SEF" URLs (you probably don't want to edit these)
$forum_url = array(
	'change_email'	=>	'profile' . $phpEx . '&amp;action=change_email&amp;id=$1',
	'change_email_key'=>	'profile' . $phpEx . '&amp;action=change_email&amp;id=$1&amp;key=$2',
	'change_password'=>	'profile' . $phpEx . '&amp;action=change_pass&amp;id=$1',
	'change_password_key'	=>	'profile' . $phpEx . '&amp;action=change_pass&amp;id=$1&amp;key=$2',
	'delete_user'	=>	'profile' . $phpEx . '&amp;action=delete_user&amp;id=$1',
	'delete'=>	'delete' . $phpEx . '&amp;id=$1',
	'delete_avatar'	=>	'profile' . $phpEx . '&amp;action=delete_avatar&amp;id=$1&amp;csrf_token=$2',
	'edit'	=>	'edit' . $phpEx . '&amp;id=$1',
	'email'	=>	'misc' . $phpEx . '&amp;email=$1',
	'forum'	=>	'viewforum' . $phpEx . '&amp;id=$1',
	'forum_rss'=>	'extern' . $phpEx . '&amp;action=feed&amp;fid=$1&amp;type=rss',
	'forum_atom'	=>	'extern' . $phpEx . '&amp;action=feed&amp;fid=$1&amp;type=atom',
	'forum_subscribe'=>	'misc' . $phpEx . '&amp;forum_subscribe=$1&amp;csrf_token=$2',
	'forum_unsubscribe'=>	'misc' . $phpEx . '&amp;forum_unsubscribe=$1&amp;csrf_token=$2',
	'help'	=>	'help' . $phpEx . '&amp;section=$1',
	'index'	=>	'index' . $phpEx,
	'index_rss'=>	'extern' . $phpEx . '&amp;action=feed&amp;type=rss',
	'index_atom'	=>	'extern' . $phpEx . '&amp;action=feed&amp;type=atom',
	'login'	=>	'login' . $phpEx,
	'logout'=>	'login' . $phpEx . '&amp;action=out&amp;id=$1&amp;csrf_token=$2',
	'mark_read'=>	'misc' . $phpEx . '&amp;action=markread&amp;csrf_token=$1',
	'mark_forum_read'=>	'misc' . $phpEx . '&amp;action=markforumread&amp;fid=$1&amp;csrf_token=$2',
	'new_topic'=>	'post' . $phpEx . '&amp;fid=$1',
	'new_reply'=>	'post' . $phpEx . '&amp;tid=$1',
	'opensearch'	=>	'misc' . $phpEx . '&amp;action=opensearch',
	'post'	=>	'viewtopic' . $phpEx . '&amp;pid=$1#p$1',
	'profile_about'	=>	'profile' . $phpEx . '&amp;section=about&amp;id=$1',
	'profile_identity'=>	'profile' . $phpEx . '&amp;section=identity&amp;id=$1',
	'profile_settings'=>	'profile' . $phpEx . '&amp;section=settings&amp;id=$1',
	'profile_avatar'=>	'profile' . $phpEx . '&amp;section=avatar&amp;id=$1',
	'profile_signature'=>	'profile' . $phpEx . '&amp;section=signature&amp;id=$1',
	'profile_admin'	=>	'profile' . $phpEx . '&amp;section=admin&amp;id=$1',
	'quote'	=>	'post' . $phpEx . '&amp;tid=$1&amp;qid=$2',
	'register'=>	'register' . $phpEx,
	'report'=>	'misc' . $phpEx . '&amp;report=$1',
	'request_password'=>	'login' . $phpEx . '&amp;action=forget',
	'rules'	=>	'misc' . $phpEx . '&amp;action=rules',
	'search'=>	'search' . $phpEx,
	'search_advanced'=>	'search' . $phpEx . '&amp;advanced=1',
	'search_resultft'=>	'search' . $phpEx . '&amp;action=search&amp;keywords=$1&amp;author=$3&amp;forum=$2&amp;search_in=$4&amp;sort_by=$5&amp;sort_dir=$6&amp;show_as=$7',
	'search_results'=>	'search' . $phpEx . '&amp;search_id=$1',
	'search_new'	=>	'search' . $phpEx . '&amp;action=show_new',
	'search_new_results'	=>	'search' . $phpEx . '&amp;action=show_new&amp;forum=$1',
	'search_recent'	=>	'search' . $phpEx . '&amp;action=show_recent',
	'search_recent_results'	=>	'search' . $phpEx . '&amp;action=show_recent&amp;value=$1',
	'search_unanswered'=>	'search' . $phpEx . '&amp;action=show_unanswered',
	'search_subscriptions'	=>	'search' . $phpEx . '&amp;action=show_subscriptions&amp;user_id=$1',
	'search_forum_subscriptions'	=>	'search' . $phpEx . '&amp;action=show_forum_subscriptions&amp;user_id=$1',
	'search_user_posts'=>	'search' . $phpEx . '&amp;action=show_user_posts&amp;user_id=$1',
	'search_user_topics'	=>	'search' . $phpEx . '&amp;action=show_user_topics&amp;user_id=$1',
	'subscribe'=>	'misc' . $phpEx . '&amp;subscribe=$1&amp;csrf_token=$2',
	'topic'	=>	'viewtopic' . $phpEx . '&amp;id=$1',
	'topic_rss'=>	'extern' . $phpEx . '&amp;action=feed&amp;tid=$1&amp;type=rss',
	'topic_atom'	=>	'extern' . $phpEx . '&amp;action=feed&amp;tid=$1&amp;type=atom',
	'topic_new_posts'=>	'viewtopic' . $phpEx . '&amp;id=$1&amp;action=new',
	'topic_last_post'=>	'viewtopic' . $phpEx . '&amp;id=$1&amp;action=last',
	'unsubscribe'	=>	'misc' . $phpEx . '&amp;unsubscribe=$1&amp;csrf_token=$2',
	'user'	=>	'profile' . $phpEx . '&amp;id=$1',
	'users'	=>	'userlist' . $phpEx,
	'users_browse'	=>	'userlist' . $phpEx . '&amp;show_group=$1&amp;sort_by=$2&amp;sort_dir=$3&amp;username=$4',
	'page'	=>	'&amp;p=$1',
	'moderate_forum'=>	'moderate' . $phpEx . '&amp;fid=$1',
	'get_host'=>	'moderate' . $phpEx . '&amp;get_host=$1',
	'move'	=>	'moderate' . $phpEx . '&amp;fid=$1&amp;move_topics=$2',
	'open'	=>	'moderate' . $phpEx . '&amp;fid=$1&amp;open=$2&amp;csrf_token=$3',
	'close'	=>	'moderate' . $phpEx . '&amp;fid=$1&amp;close=$2&amp;csrf_token=$3',
	'stick'	=>	'moderate' . $phpEx . '&amp;fid=$1&amp;stick=$2&amp;csrf_token=$3',
	'unstick'=>	'moderate' . $phpEx . '&amp;fid=$1&amp;unstick=$2&amp;csrf_token=$3',
	'moderate_topic'=>	'moderate' . $phpEx . '&amp;fid=$1&amp;tid=$2',
	'admin_index'	=>	'admin/index' . $phpEx,
	'admin_bans'	=>	'admin/bans' . $phpEx . '&amp;sort_by=1',
	'admin_categories'=>	'admin/categories' . $phpEx,
	'admin_censoring'=>	'admin/censoring' . $phpEx,
	'admin_extensions_manage'=>	'admin/extensions' . $phpEx . '&amp;section=manage',
	'admin_extensions_hotfixes'=>	'admin/extensions' . $phpEx . '&amp;section=hotfixes',
	'admin_forums'	=>	'admin/forums' . $phpEx,
	'admin_forums_forum'	=>	'admin/forums.php#forum$1',
	'admin_groups'	=>	'admin/groups' . $phpEx,
	'admin_loader'	=>	'admin/loader' . $phpEx,
	'admin_reindex'	=>	'admin/reindex' . $phpEx,
	'admin_settings_setup'	=>	'admin/settings' . $phpEx . '&amp;section=setup',
	'admin_settings_features'=>	'admin/settings' . $phpEx . '&amp;section=features',
	'admin_settings_content'=>	'admin/settings' . $phpEx . '&amp;section=content',
	'admin_settings_email'	=>	'admin/settings' . $phpEx . '&amp;section=email',
	'admin_settings_announcements'	=>	'admin/settings' . $phpEx . '&amp;section=announcements',
	'admin_settings_registration'	=>	'admin/settings' . $phpEx . '&amp;section=registration',
	'admin_settings_communications'	=>	'admin/settings' . $phpEx . '&amp;section=communications',
	'admin_settings_maintenance'	=>	'admin/settings' . $phpEx . '&amp;section=maintenance',
	'admin_prune'	=>	'admin/prune' . $phpEx,
	'admin_ranks'	=>	'admin/ranks' . $phpEx,
	'admin_reports'	=>	'admin/reports' . $phpEx,
	'admin_users'	=>	'admin/users' . $phpEx
);
?>

Почему так?
А это чтобы, во-первых, больше формализовать код, а во-вторых, чтобы была возможность обойти внешние вызовы программ типа XRumer, с помощью которых спамеры регаются на сайтах и форумах. Также недохацкеры будут отдыхать.
Делается эта защита так:
1) Формализуем обращения к php-файлам через ссылку на ОДИН файл, и тот с расширением .inc. В этом файле делаем финт ушами:

Код:
<?
$phpEx = '.php';
?>

Это позволит в одном месте изменить $phpEx например, на .code - и это будет расширением для всех php-файлов сайта.
И да, сами файлы надо переименовать, а в .htaccess задать, что индекс надо искать, например, в файле index.code:

Код:
DirectoryIndex index.code

2) ВСЕ ссылки на ВСЕ файлы сайта внутри кода, заменяем на конструкции типа

Код:
<?
if (!defined('IN_ENGINE'))
{
	die("Hacking attempt");
}

...
...
...

$site_root = $_SERVER['DOCUMENT_ROOT'] . '/';
$incl_path = $site_root . 'details/includes/';
$tpl_path = $site_root . 'details/templates/';

...
...
...

include($incl_path . 'config' . $phpEx);

...
...
...
?>

Обратите внимание: доступ к отдельным каталогам или файлам - строго через абсолютный путь от корня сервера. Так код работает, и к тому же в командной строке браузера уже бесполезно задавать внешние линки на обработку кода. Через это, например, работали эксплойты для phpBB до второй версии phpBB, и это фиксилось перелопачиванием кода, покуда в одной из версий не было уже изначально.
Наиболее показательны здесь такие моменты:
2.1) Все пути через переменную $site_root - от корня сервера
2.2) Расширения заданы через $phpEx - в одном месте указано расширение
2.3) Дефайном IN_ENGINE указано, что обращаться к файлу можно только если указано, что обращение легально. Вызвать файл напрямую невозможно. Ещё по путям указывается, что при этом такое обращение должно быть либо строго по $_GET либо строго по $_POST, но этим я уже обычно не морочусь.
3) Ещё очень полезно перенести ВСЕ файлы сайта кроме индекса, в каталог типа ./includes/ или, как у меня, ./details/includes/ и задать пути к ним показанного выше формата

Код:
<?
include($incl_path . '%file_name%' . $phpEx);
?>

что даст хоть какую-то защиту от вызова этих файлов с помощью неких колдунских финтов, буде таковые ещё есть.

Такая вот загогулина.
Простые меры - но помогают отсеивать любопытных и дофига спамящих. Да, не всех - но многих.

Я правда ещё не освоил защиту от DDOS - но это в планах.

0

140

Интересно, это вообще кто-нибудь читает?

0


Вы здесь » Единый форум поддержки » Архив » Движок phpBB2 Elysium by John Warner