Показать сообщение отдельно
Soniks вне форума      Старый #8  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
12.02.2006, 18:38

Теперь внесем небольшое изменение в админ файлы настроек системы и модулей.
Открываем файл /admin/modules/settings.php
Находим:
PHP код:
 Header("Location: ".$admin_file.".php?op=Configure"); 

И выше добавляем:
PHP код:
 //Copyright Soniks http://mynuke.ru
$result $db->sql_query("SELECT * FROM ".$prefix."_config LIMIT 1");
$sett ="<?php\n\n";
$sett .="if(!defined('NUKE_FILE'))\n{\n die();\n}\n";
foreach(
mysql_fetch_assoc($result) as $key => $value){
$
$key $value;
$sett .="$".$key." = \"".str_replace('"','\"',$value)."\";\n";

$sett .="\n?>";
if(
$sett !=""){
$fp fopen (NUKE_PATH."cache/config""wb");
fwrite($fp$sett);
fclose($fp);
}
if(!
file_exists(NUKE_PATH."cache/.htaccess")){
$sett2 ="deny from all";
$fp2 fopen (NUKE_PATH."cache/.htaccess""wb");
fwrite($fp2$sett2);
fclose($fp2);



Открываем файл /admin/modules/modules.php
Находим:
PHP код:
 $res $db->sql_query("update " $prefix "_main set main_module='$title'");
$res2 $db->sql_query("update " $prefix "_modules set active='$active', view='$view' where mid='$mid'"); 

Ниже добавляем:
PHP код:
 //Copyright Soniks http://mynuke.ru
$sett ="<?php\n\n";
$sett .="if(!defined('NUKE_FILE'))\n{\n die();\n}\n";
$sett .= '$main_module = "'.$title.'";';
$sett .="\n?>";
$fp fopen (NUKE_PATH."cache/main""wb");
fwrite($fp$sett);
fclose($fp);
 
if(!
file_exists(NUKE_PATH."cache/.htaccess")){
    
$sett2 ="deny from all";
    
$fp2 fopen (NUKE_PATH."cache/.htaccess""wb");
    
fwrite($fp2$sett2);
    
fclose($fp2);



Вносим новую переменную в конфиг, окрываем config.php
Находим:
PHP код:
 $subscription_url ""

и ниже добавляем:
PHP код:
 $group_use 1// использование групп: 1-да | 0-нет 

Если вы пользуетесь группами для пользователей в php-nuke (не в форуме), то ставим 1, а если вам не нужны заработанные балы пользователей на сайте и сами группы, то ставим 0 - это уменьшит количество запросов на сайте.

Откорректируем modules.php, находим:
PHP код:
 $result $db->sql_query("SELECT active, view FROM ".$prefix."_modules WHERE title='$name'");
$row $db->sql_fetchrow($result);
$mod_active intval($row['active']);
$view intval($row['view']); 

Заменяем на:
PHP код:
 $mod_active intval($modules_info[$name]['active']);
$view intval($modules_info[$name]['view']); 

Находим:
PHP код:
 $result2 $db->sql_query("SELECT mod_group FROM ".$prefix."_modules WHERE title='$name'");
    
$row2 $db->sql_fetchrow($result2);
    if (
$row2[mod_group] != 0) {
     
$result3 $db->sql_query("SELECT name FROM ".$prefix."_groups WHERE id='$row2[mod_group]'");
     
$row3 $db->sql_fetchrow($result3);
     echo 
""._ADDITIONALYGRP.": <b>$row3[name]</b><br><br>";
    } 

Заменяем на:
PHP код:
 if ($modules_info[$name]['mod_group'] != 0) {
     
$result $db->sql_query("SELECT name FROM ".$prefix."_groups WHERE id='".$modules_info[$name]['mod_group']."'");
     
$row $db->sql_fetchrow($result);
     echo 
""._ADDITIONALYGRP.": <b>".$row['name']."</b><br><br>";
    } 

Откорректируем index.php, находим:
PHP код:
 $row $db->sql_fetchrow($db->sql_query("SELECT main_module from ".$prefix."_main"));
$name $row['main_module']; 

Заменяем на:
PHP код:
 // GET MAIN MODULE
if(file_exists("./cache/main")){
include_once(
"./cache/main");
}else{ 
$row $db->sql_fetchrow($db->sql_query("SELECT main_module from ".$prefix."_main"));
$name $row['main_module'];
$sett ="<?php\n\n";
$sett .="if(!defined('NUKE_FILE'))\n{\n die();\n}\n";
$sett .= '$main_module = "'.$row['main_module'].'";';
$sett .="\n?>";
$fp fopen ("./cache/main""wb");
fwrite($fp$sett);
fclose($fp);
if(!
file_exists("./cache/.htaccess")){
$sett2 ="deny from all";
$fp2 fopen ("./cache/.htaccess""wb");
fwrite($fp2$sett2);
fclose($fp2);
}
}
$name $main_module

Упростим немного систему бана, открываем includes/ipban.php
Находим:
PHP код:
 $numrow $db->sql_numrows($db->sql_query("SELECT id FROM ".$prefix."_banned_ip WHERE ip_address='$ip'"));
if (
$numrow != 0) {
echo 
"<br><br><center><img src='images/admin/ipban.gif'><br><br><b>You has been banned by the administrator</b></center>";
die();
}
$ip_class explode("."$ip);
$ip "$ip_class[0].$ip_class[1].$ip_class[2].*";
$row $db->sql_fetchrow($db->sql_query("SELECT ip_address FROM ".$prefix."_banned_ip WHERE ip_address='$ip'"));
$ip_class_banned explode("."$row[ip_address]);
if (
$ip_class_banned[3] == "*") {
if (
$ip_class[0] == $ip_class_banned[0] && $ip_class[1] == $ip_class_banned[1] && $ip_class[2] == $ip_class_banned[2]) {
echo 
"<br><br><center><img src='images/admin/ipban.gif'><br><br><b>You has been banned by the administrator</b></center>";
die();
}


Заменяем на:
PHP код:
 $ip_class explode("."$ip);
$ip2 "$ip_class[0].$ip_class[1].$ip_class[2].*";
//ADD
$numrow $db->sql_numrows($db->sql_query("SELECT id FROM ".$prefix."_banned_ip WHERE ip_address='$ip' OR ip_address='$ip2'"));
if (
$numrow != 0) {
echo 
"<br><br><center><img src='images/admin/ipban.gif'><br><br><b>You has been banned by the administrator</b></center>";
die();


И последнее изменение в ядре системы, но очень весомое.
Открываем header.php
Если вы используете сторонние системы безопасности php-nuke или же вам не нужна система бана пользователей, то удаляем строчку:
PHP код:
 include("includes/ipban.php"); 

Настоятельно рекомендую избавиться от стандартной статистики посещаемости, она ну уж слишком много запросов делает к БД, да и обычные счетчики типа http://top.mail.ru/ куда информативнее.
Если решились, то находим и удаляем строчку:
PHP код:
 include("includes/counter.php"); 

Так же надо убрать теперь не нужные нам таблицы, для этого выполним SQL-запрос:
Код:
DROP TABLE `nuke_counter`, `nuke_stats_date`, `nuke_stats_hour`, `nuke_stats_month`, `nuke_stats_year`;

*не забываем заменить префикс nuke_ на свой
Так же удаляем теперь не нужные нам файлы:
includes/counter.php и папку modules/Statistics/

В результате проведенных выше изменений над ядром системы количество запросов снизилось до ~8, это с учетом всех включенных возможностей php-nuke.
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".