пятница, 5 декабря 2008 г.

ТОлько стит начать заниматься нормальными делами....

Сразу увеличивается настроение делать что-то другое, а не то что на до =), например сюда побольше писать...

Раскрываю коварные планы, Можно, если конечно народ найдется, сделать сайт, который будет централизованно заливать ссылки для с скачивания с рапиды и депозита, а то как-то народ ломает если постить на все сайты.

суть такая: создается сетка сайтов на движке dle, и все объединяться в сеть постинга, соответственно, если пользователь зарегистрировался по реферальской ссылке, то он постит на сайты одной кнопкой и получает за скачивание бабло, а человек который все содержит, живет на проценты рефералов и дальше развивается.... =) я не успею это все написать, но идея хороша это и есть настоящий пассивный заработок в интернете, естественно это не мгновенный доход.... Но развитее идеи может получить не плохой разворот....
так, а теперь сделайте пару кликов сюда - и расскажите в комментах о том что думаете о данном проекте, просто проект умирает и надо как - то его реанимировать, иди кончились......

четверг, 30 октября 2008 г.

СТранные парадоксы Яндекса

Похоже товарищь за торгашей ссылок взялся в серьез =), в сапе висит половина сайтов у которых страницы не проиндексированы и вываливаются, внешние ссылки на сайты тоже отвалились, блого мои сайты траплины и пофиг они тицу 30 - 150 держат и PR 4-5 и пофиг что там на рынке происходит =).... Linkfeed оживился, не понятно только по чему, цены там больше, а хотя наверно из-за переходы сапы в налогоблажение многие перестают работать, но думаю врядли они перестанут там работать потому-что народу много и бабло идет ... все кто скрываются в полезут в linkfeed,... Хотя че скрываться нарко бараны чтоли =))

понедельник, 6 октября 2008 г.

Unix, FreeBSD, Windows - ативирусы, все без разницы когда у пользователей руки из жопы растут.....


сегодня перейду на WP, потому-что конечно dle - хорошо =), но надо под себя точить немножко, а на WP поставлю какую-нибудь тупую тему, плагини и буду пастить, и всякую хрень туда еще наркучу, чтоб интересней было, дописал закладки для DATALIFE ENGINE, но пока без FEEDBurner в админке, в ближайшее время вылажу...

adres14.ru
--------------------------------------------------------------------
везет же мега человекам, сидят админят одну большую сеть, а тебе дают 2 маленьких и блять все с вирусами!!! грёбаный sajnti прожег мне весь мозг, размнажается как падла и с фдешек приходить, говнюк все Exe файлы выносит.....

среда, 1 октября 2008 г.

Этапы развития человека изучаючего php

Парадокс: сначала была написана нижнее сообщение, потом уже раскрытее темы которвя написана выше, мда....

Все началось зимой. Захожу к товарищу узнать есть ли у него трансформатор 24 В на 300Вт огого ток =) ну не суть... смотрю сидит за старым убогим ноутбуком и че-то печатает в блокноте.
-ты че делаешь?
-как че сайт...
-дык он же на html делается а у тебя какой-то include, $db->sql_query?
-а ну это я класс соединения с базой данных вытащил
-эээ какая база? че ты мне лепишь?
-мда ты походу совсем тупить начинаешь, надо тебе вылазить из коробки и заканчивать железом заниматься.

короче из разговора дали понять что это типа круто и надо заниматься, человек сам писал CMS и не готов был брать готовые.... и получал довольно прилично за свои творения...

Развитее началось с того, что скачал книжку Лауры Томпсон, там было помоему все понятно и доступно написано, почитал, сел и понял что немереное количество некстов на англицком мне не набрать и не понятно нихера....

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

наткнулся на книжку "от програмиста програмисту" писали книжку для PHP4 довольно интересно получилось и понятно... доступно короче ... подумал: ВСЕ Я МЕГА ГУРУ МАТЬ ТВОЮ..

начал искать CMS чтоб типа адаптировать для себя, сначала по реккомендациям сисадминов взял typo3 - установил и понял - тихая печаль для немцев, хер победишь..

искал дальше нашел dle 5.5 установил полазил в админке. нихера не понял. потом была joomla и еще какие-то....

нашел php-nuke, а там человеки руссифицировали нормально, алминка понятная, и внутри все как в книже "от прогрмамиста програмисту" =) ... изучал долго, нашел много движков клонов slaed, postnuke, smalnuke. Начал писать к ним модули, модли работали. Начал заходить на форумы, на формух сразу становиться понятно какой контенгент требует данную cms и вообще уровень развития пользователей )

написал парсилку RSS лент с синонимизацие контента ленты для Нюки, модуль онлайн с выводом поисковиков, переделал чьюто новостную ленту под себя, модуль для работы с сапой, linkfeed, begun короче засунул все в админку чтоб опять же было удобно ) оптимизировал сам движок, куски оптимизации выложены на этом мега блоге.....

и понял что это все дрова и как-то все не прикольно, начал лезть в javascript там для меня лес =)

увидел много блогов на wordpress на серверах они бегают быстро картинки хорошие, удобная адсинка тем много, да как-то деревянно все, переделал блок закладок и синонимийзара под него. А тоже надоел. решил на локалхосте все это дело исследовать, мой старенький целик опухад когда загружалась главная страница, использовал кешированае, вроде полегче стало.... короче достал он меня незнаю почему....

нашел maxcms человек использовал структуру WP удобно, но локалхост опять умерал и генерировал страницу 1-5 секунд...... полазил в теме автора попытался понять структуру работы так и не понял, потому-что какими-то странными стандартами он пользуется, мозг только сумасошел замкнувшись в каком-то месте.

вернулся к dle и тут на меня нашло озороение - вот мега система с AJAX которую можно править под себя. не даром её оказывается полюбило много варезников... все довольно просто на самом деле. (конечно просто после остальных рассмотренных CMS) отдельно шаблоны, скрипты, админские настройки, можно править и понимать.... сейчас доделаю синонимайзер, закладки остальное все есть в интернете =) и все фактически сайт готов для любой работы....... создание статических страниц, реврайт голосование, все остальные преблуды по желанию если конечно нужны.... WP - конечно великолепно, но всегда есть "НО"
--------------------------------------------------------------------------------------------
получается что все довольно простое оказывается на начальном этапе мега сложным, а тупо3 - ПОЛНОЕ НЕМЕЦКОЕ ГОВНО, будь она хоть на 250% защищенной....

Спал ночью =) а во сне какая-то муть происходила, почему-то в голове крутились одни RSS ленты, потом начал думать о PR и тИЦ - на самом деле этими параметрами пользуются только SEO или оптимизаторы.... в реале человеку насрать на эти параметры и они даже не знаю на что они влияют. подумал о пластике выдачи данных и использования параметров. Яндекс пользуется всякими тегами, синимами + тИЦ для расставления приоритета в своей выдачи после задания поискового запроса, GooGle - аналогично, но у меня в голове не укладывается как он использует свой пагеранг, его поидее максимум 10 но страничек с PR 1-5 очень много, у них есть так же теги, получается что как-то слабинько реагирует. потому-что сайт на который больше ссылок, если смотреть по PR, по идее должен стоять в позиции выше, чем но PR не может быть типа: 5.5. Значит Google смотрит по количеству ссылок, количеству возвращений к поиску после открытия сайта, естественно все через куки делается. Похоже есть инкубационный период, который дается молодым доменам. т.е вы залили сайт, потом, после индексации Гуглем он появляется в 1 десятке - странный пародокс, т.к все ого мега параметры: каталог DMOZ, PR и прочая фигня = 0, они смотрят если там действительно нужная информация, то после нахождения вашего сайта человек врядли вернется к поиску (рассматриваем определенный промежуток времени), набрав определнное количество переходов с поисковика получаем некий рейтинг, потом, по прошествии определенного времени начинают учитываться и остальные параметры.... у Яндекса, если у тебя тИЦ = ... нет данных ... то ты в большой черной глубокой яме, НО!!! не забываем о RSS ленте блогов, т.к Блогов херова туча, то естетственно 3-4 раза в неделю человеки в них пишут и не имеет смысла использовать приоритеты, но они учитываются чтоб их расставить т.к как народа много, получается: если ты - безграмотный дятел или еще лучше тупорылый алень котороый не знает основы HTML, то ты опускашеся ниже, но в RSS нету html =) ... значит идет фильтр по наибольшему количеству слов подходящему к запросу т.е слов + слов синонимов....

у данного блога индексация яшей врядли будет произведена, да и тащить чужой домен че-то не особо прет =) не смотря на то, что этот блог не индексируется яшей, он хорошо индексируется гуглем т.к это есть их купленное существо, которое есть плащадка для рекламы и конкретной аудитории, которая будет тыкать, не думайте что авторы блогов с этой рекламы получают немеряный доход =) она скорее как доп контент, потому-что за нее платят деньги хоть не большие но деньги, смотрится (если грамотно оформить) хорошо. Если авторы опасных и коварных блогов о заработке захотят конкретно привести себе человеческую аудиторию, то они её приведут, про методы привода они сами иногда рассказывают, но незнаю реализуют ли они сами эти свои мега проекты по захвату траффика.....

как написано в помощи у Гугля: ребята делайти хорошие сайты, а мы уже постораемся донести до вас читателя =) и вам и PR поднимут и тИЦ - главное хорошая инновационная идеz...

суббота, 27 сентября 2008 г.

через день апдейт PR



Особенно порадывал только что купленный домен =))))

просто на сайтах уже 0->2 3->4 1->3 а че так в полне =)

среда, 24 сентября 2008 г.

SAPE - забавная, но хорошая система

В системе бывает много глюков, но она всегда адекватно реагирует на не адекватное поведение людей =).....

воскресенье, 14 сентября 2008 г.

Про МОЙ блог

Похоже этот кусок кала не кому не нужен =) потому-что мне он не нужен становится, вечное катание ваты, попытки открытия кучи сайтов авто-ботов. Парсеры почти дописаны, поисковое ядро не доделано даже на 10% =/ но зато первые два опыта по созданию сайтов парсеров контента есть.... буду их развивать...

з.ы есть предложения выслушаем.
допишу парсес выложу

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

Сплог о доходах блогеров

воскресенье, 7 сентября 2008 г.

Хостинг практически бесплатный

Вот нашелся реальный хостинг, который фактически не напрягает в ценовом качестве, минимальный тариф 12 рублей в месяц - это дешевле пакета молока, проезда в маршрутке, пачки сигарет бутылки пива =). да самое интересно это то, что на нем поддерживается все что надо это:

Трафик, Гб неограниченно. (этим не удивить)
Субдоменов неограниченно. (хорошая вещь)
MySQL
phpMyAdmin +
POP3 +
SMTP +
IMAP +
Веб-интерфейс для почты +
PHP5 +
Perl5 +
CGI +
htaccess +
Cron +
DNS +
ZendOptimizer +
Web Scripts +
Статистика сайта +


А что еще для счастья надо?

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

Мда заметьте самое важное сайт пока без партнерской программы, администрация обещала что если развитее проекта будет продолжаться интенсивными темпами, то будет реальная партнерская программа.... Ну пока этого нету надо использовать цены проекта .

Хостинг HOST-FOOD - ЧТОбы не промазали мимо банера:

четверг, 4 сентября 2008 г.

Плагин для Wordpress - приблуда для работы с бакстером

Хотел давно сделать что-то подобное, да только времени небыло, появилось немного времени...
Для работы с партнерской программой от бакстера, для буржуев короче.
Т.е они заходят на сайт с данной программой и видят предупреждение гугла что на сайте вирус =), и Гуглу предлагаем пользователю скачать SpyShredder пользователь же не дурак(средне статистичекский американец), он захочет качественную защиту, поэтому предаставим им (пользователям эту возможность). Так вот в чем вся суть? структуру работы описывал в ЭТОМ ПОСТЕ Получилось что-то мутно-не здоровое. Т.к из меня писака ни какой расскажу как работает Даная приблуда для WORDPRESS.
Как обычно, устанавливаете у себя в папку плагины, как папка называется так и копируете в плагины, потом активируете, самое главно - не забыть проставить галки в настройка самого плагина, а то не кто не сможет попасть на вашу главную страницу и всех сливать будет на Шпийёнов. ну вот из партнерики извлекаете скрипт для всплывающих окон, вставляете куда надо, всё что надо вставлять впринципе подписано, так что проблемм возникнуть не должно. СКАЧАТЬ ПЛАГИН ДЛЯ WORDPRESS для работы в buckster.ru - ну вот => Реф ссылка

Естественно бета версия , не до конца все что надо доделано, попробуйте...... потом если что отпишитесь буду ждать....

Да надо тестите только на локалки а то всякого разного рода бред зальется во все поисковики.... как до дому доберусь перезалью... =/

среда, 3 сентября 2008 г.

"Как заработать в Интернете" - =) или что сейчас пишут люди


Случайно наткнулся на книжу, какой-то добрый человек выложил Книга Довольно интересно получилось =) вроде книга как книга, но методы заработка просто убили, начинающим интересно будет почитать, т.к там написано: как заработать без начального капитала, ну если человек действительно не хочет вкладываться в интернет, но начать в нем зарабатывать хочет, то ему следует почитать.

Автор: Лопатина И.С
Сибирское Университетское издательство.

Написано довольно интересно, конечно временные затраты немножко заниежены но в принцепи суть заработка, как описано в данной книге такой и остается...

Мне вот только одно обидно -) это сколько же партнерских ссылко можно было туда вставить? =) ....

Интересно сам автор брал деньги за описание какой-то из конкретных систем? потому-что это реальная реклама еще со школьной скамьи. Т.к. если человек до этого момента ничего не знал, то он пойдет и будет пытаться работать в системах которые досканально описаны =) да жесть.... вот самый лучший пиар.... так что самая реальная раскрутка систем заработка это при обучении экономистов впаривать им что реально могут заработать =)))))

КАК ЗАРАБОТАТЬ В СЕТИ - СКАЧАТЬ

четверг, 28 августа 2008 г.

Скоро АП тиц и пр =)

Уже в статус баре яши тиц поменял значения и PR тоже, может это мего глюк? или как понимать различее всех параметров в 2 раза =)....

Плагин для Wordpress

Всетаки взялся написать плагин, чтобы на Wordpress , была возможность заливать, т.е работать с англиским мусорным траффиком, ну там по партнерской программе разным системам заливать трафик. планируется сам плагин выложить в понедельник, Скорее всего будет приспособлеб под многие системы, на сколько будет забористый? - Надо тестить...

Тут мысль пришла, если сейчас системы продажи ссылок работают с ручным размещением, то почему не зайти в любой закладочник, и в него не расположить много ссылок с хорошим пиаром и тицом, наверно уже это кто-то прошарил, и давно дорого продает такие ссылки =))

четверг, 21 августа 2008 г.

Обзор полезных вещей



(PromoPark)Наткнулся совершенно случайно еще при рождении системы, но в то время нечего было исследывать, довольно интересная систма. SEO анализ и отслеживание различных изменений.
Анализ поисковых запросов и прочая ежедневная лабудень в одном комплекте. Понравилось:
"Модуль работы с сылкми, не только интегрирует данные из нескольких сервисов мониторинга и управления ссылками (Я.Вебмастер, Sape и др.), но и позволяет удаленно работать с ними." - это копипаст.

Потом нашел Feed Master
как с ним работать нашлось у тода
Также у него есть описание работы с другой не менее интересной системой.

Почему?

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

Облако тегов понравилось =)

вторник, 19 августа 2008 г.

Про LinkFEED

Только что постанул про 666 у таг хоста, на линкфиде вылезла забавная новость про то, что можно самому искать и размещать ссылки, с ценой меньше чем у вас на сайте т.е как я понял:
делаются фильтры, и выкидываются в поиск заявок, если цена устраивает, то размещаешь у себя на странице ссылку, а что удобно -).....

Удачный день для хостинга

20 августа 2008 - интересное число =),
зайдя к хостеру обнаружил забавное число у него в низу странички:


а что в принципе могли акцию организовать типа: кто купит у нас тариф в адский день будет считаться адским сатаной и иметь какой-нибудь супер бонус в виде увеличение процента реф ссылок =))))

воскресенье, 17 августа 2008 г.

Планы, время, работа и занятия спортом

Сидя на работе и мечтая о бесплатном спортивном зале.....
Раньше и не демал что так может случиться, произойти.

Все время гулял катал вату, денежные вопросы даже не напрягали, занимался любимыми делами: сидел раскрашивал сидиромы, корпуса, паял из готовых схем усилители ват так 50 на канал, потом оказывалось что к нему надо нормальный блок питания в не 12 вольтовый импульсник.... =)

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

Не использую все время тратя его на непонятное курение и распитие напитков, сидение в чатах и ожидания того что вот вот что-то произойдет .... что-то глобально переворачивающее твою жизнь, а нихрена попрежнему как дурак сидишь и нечего не делаешь откладываю реальных не онлайновых друзей на потом...
выйдя из чата в 4 часа утра понимаешь что на самом деле охото спать и ложишся, проснувшись в 12 понимаешь, что до 18 00 еще целых 6 часов и начинаешь думать куда бы его потратить (время). приходилось выходить на улицу за сигаретами едой. тупо смотреть на витрины понимая что тебе в принципе ничего с них не надо. и люди как - то не по погоде одеты: светит солнце тепло, а они в рубашках, юбках, шортах тапках, а вдруг дождь пойдет или ветер подует, лучше останусь в куртке.......

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

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

к чему это все? да к тому что вот блогинг - сначала увидев первый раз в жизни рекламу того что можно заработать в интернет у меня был моральный шок, т.к модемный интернет использовался только для просмотра почты и прнографии, которая грузилась минут 5-7 =).

а тут такие слова: заработай на своем сайте, создай мега блог, и помещай туда платные статьи и вообще, как только будет у тебя свой сайт, так куча людей мгновенно будут на него заходить и нажимать на платные ссылки, буквально открыв свой блог - вы открываете портал с посещаемостью в 1000 человек в день, и каждый челвек хочет почитать какое говно на этот раз вы написали, как же у вас прошел день, видел ли ты ваську из соседнего подъезда? а алкаша из тех.этажа? видел в 12.45 пошел за сигаретами встретил ваську, поговорил с ним и внутренний председатель комиссии решил что необходимо послать ваську в жопу .....

Ну что есть смысл читать дальши или писать ? че-то не понимаю уже не чего

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

Деньги к деньгам, поситители к посетителям, траф уходит и приходит... люди паразиты...
причем да же .... если смутило определение....
пришел в нет накачал киношек и сидишь сомтришь....

мда из-за бессмысленной траты времени все проекты откладываются в бочку и чем больше времени проходит тем это бочка покрывается большей сомолой и потом от туда уже ничего не выковырять.... на работе все постоянно: а это как так работает а у меня дома компьютер медленный что делать? как принтером печатать? у него же нету клавиатуры.......

а ф топку........

все для ваших глаз чтобы не рябило =)))
------------------------------------------------------------
типа что прочиталось: пока напал тупняк.

Молодца озвучил 11 способов добычи полезного золота
Интересная информация

четверг, 14 августа 2008 г.

wordpress синонимайзер

Извращаясь от без исходности немного переделал плагин
Работает, но если что не так я не виноват. =)
В общем ручной синонимайзер, применять так:
активируем - он создает таблицы
в комплекте лежит файлик, скачанный откуда-то из инетернета типа базы.

При загрузки учитывается 2 фактора:
1. если файл грузить польностью и врема работы скрипта у php где-то 20 - 25 сек, то файл полностью не успевает прогрузиться, поэтому надо его либо разбивать где-то на 3 части либо мелким копипастами вставлять в окно сверху(при так называемой настройки плагина).
2. формат кодовой страницы должен быть UTF-8 иначе загрузите в базу кучу вопросов.


Немножко переделалась сама таблица хранения слов.

Потому-что синонимы - слова одинаковые или похожие по смыслу и как-то засовывать их в разные синонимы не прикольно.

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

Качать тут

вторник, 12 августа 2008 г.

Хранение файлов

Многие хранят свои файлы прямо у себя на сервере кором хостятся либо если имеют бесплатный хостинг с ограниченным местом и не понимают куда все дело слаживать....
слажывать можно:
На депозид или рапиду еще есть ifolder вот...

p.s написано из-за того что временами заходит сосед и задает тупые вопросы......

интернет заработок с помощью дорвеев

Как создать дорвей? или нет не так, Создаем сайт с помощью которого отлавливаем аудиторию и отправляем на свой сайт. При этом если грамотно перелинковать сайты, то можно получить приличный прирост.....

В общем к делу. У вас есть какой-то сайт на котором весит реклама за клики или куча реферальских ссылок, естественно ему нужна аудитория. Откуда брать? есть системы которые продают траффик который будет за определенную денежку ходить по страницам и кликать на ссылки.

Задача: Добиться потока с сайта который не несет ни какой информационной нагрузки

1. засунуть сайт в поисковые системы
2. Наполнить его вкусным контентом
3. Много страниц с ключевыми (поисковыми) запросами.

ходя по просторам интернета набрел на интересный скрипт: СКАЧАТЬ МЕГА СКРИПТ....
вот так какова его суть, автор скрипта сделал интресную работу. Т.к есть возможность получить за 5 минут от 1 до 5000 страниц =). Он просто в применении, вешается на домен 3 его уровня, а зачем такой дермощит выкладывать на 2 уровень?
так вот... Если поменять внутри начинку и названия внутренних ссылок то естественно сайт затачивается под нужные слова.

Начинка сайта находится в файле index.php и определена тегами PRO т.е отображать текст так как он есть в самом файле.

Ну вот у вас и готов сайт на много страниц.

Когда данное добро тестировалось, то поискови сходили сума совсем, яша за неделю выкачал около 15к страниц, но так как не было ссылок на сайт из вне, то в выдаче было 3-5 страниц в день.

Воспользвовавшись услугами 1ps и разместив его в автоматеческие каталоги, которые требуют обратной ссылки, пошел народец =). Ну нормальные каталоги естественно отпривили сайт в топку.

Т.к искатели не могли найти нужную информацию начали тыкаться в Бегуна, ЯндексДиректа....

Да, для того чтобы добавить сайт для переадресации в файле index.php все описано...

Для работы коварного скрипта нужен PHP....
В архиве лежит еще класс для парсинга RSS из CMS datalife - удобно просто было набивать сайт контентом вот и решил добавть.

У меня данный класс привязвался к БД и добавлял распарсенный текс в статьи и включался в данный генератор.

как работает RSS парсер:



include_once ('rss.class.php');

$rss['url'] = ""; - тут вводиться адрес ленты в формате: http://www.site.ru/rss.xml или php или asp - короче как-нибудь где создается таблица

$rss['max_news'] = 10; максимальное число новостей извлекаемое из ленты (если там есть все новости).

$xml = new xmlParser(stripslashes($rss['url']), $rss['max_news']);

$config['charset'] = "windows-1251";

if ($xml->rss_option == "UTF-8") $xml->convert("UTF-8", strtolower($config['charset']));

elseif ($xml->rss_charset != strtolower($config['charset']) ) $xml->convert($xml->rss_charset, strtolower($config['charset']));

$megaNEWS = "";

foreach ($xml->content as $content)

{

$title = $content['title'];

$content = $content['description'];

$megaNEWS .= $title .'какое-нибудь оформление'. $content;

}



в куске файла где надо вывести:

echo $megaNEWS;

ну вот так....

в итоге создаем в домене mysite.ru: seo.mysite.ru, mega.mysite.ru, super.mysite.ru
и ждем роботов

четверг, 7 августа 2008 г.

Linkfeed походу жестко прет...

не ясно что-то происходит в сфере продажи.... сначало глючил инет =) потому-что солнечная активность и кривые руки админов у прова вырубили весь канал, потом кликальщики пишут что у них нихрена не кликается, потом решил посмотреть как дела на моем не здоровом проекте, оказывается все плохо и действительно проект не здоров. надо все таки действительно нормально продумывать системы. линкфид перестал нормально видеть индексы страниц в яше и гугле.... конечно временно наверно, но всеравно не приятно, sapa ушла в запой походу, такое ощущение что они начали руками все смотреть, проверять.

нашел пару блогов о заработке в которых писали ровно месяц, через месяц некоторые ушли на платный хостинг, некоторые просто перестали писать, отписавшись типа: вы все уроды и нихрена не заработать в этой сфере, мда.... такое ощущение что люди ждали халявы как на работе. Т.е сидишь целый день катаешь вату и в 19-22 часов домой и там телик с пельмешками, пивом, или еще какой херьней, и на следующий день также. в блогах полутрупах были какие-то свежие мысли по поводу заработка, но все сводились к тому что надо быть реально психологом что грамотно ссылки раскидывать, т.е человек повел по строке что читает а тут херак, вылезла такая не меряная кнопка на весь экран, что промазать нельзя.
Кончено психология в этом есть, но еще есть такая штука, что начать с нуля очень печально, нодо иметь хотябы 1000 рублей что купить: домен, кофе, сигареты.... подумав и нарисовав человеко ориентированный дизайн запульнуть на какой-нибудь бесплатный хостинг, но тут тоже траблы у многих бесплатных хостеров написано: должны стоять наши банеры 480Х60 либо 5-10 текстовых ссылок, а иначе попрощайтесь с вашим хостингом мы его просто удалим....

короче разными извращениями из-за корявости сайта, медленной индексацией яши, было получено:
4-15 уникальных поситетелей в день - просто гора немеряная =))))))
4$ - в сапе и 350 рублей в Бегуне.... а да за прошлый месяц денег хватило чтоб оплатить домен т.к планировалось заняться глобалоьно этим дором давно, все руки не доходили...

Вот такой ободряющий пост....
Мой бот - пидарас не хочет индексировать чужие RSS и странички адекватно все время обратки большой и сй

вторник, 5 августа 2008 г.

Бесплатный хостинг....

Искал бесплатный хостинг, нашел вот что: Подойдет впринципе для многих целей не смотря на соглащения которые там описываются. Сейчас исследуется hostland.ru
на предмет нормального размещения сайта, а что еще надо для 3-4 месячной работы для всяческих тестов скриптов и прочего. Мда еще нашелся какой-то новый хостнинг - есть бесплатое и платное размещение. (реф ссылка =)) странно но почему-то оставили иконку от slaed'а, по прочтению внутренностей есть вроде ренистрация в 1ps.ru
    Сервисы бесплатного хостинга (free hosting) :

  • www.Narod.ru - Бесплатный хостинг с неограниченным размером сайта - Самый популярный сервис для новичков в интернете, поскольку хостинг не поддерживает скрипты и базы данных, однако есть более 100 шаблонов для быстрого создания сайта с нуля, плюс есть самые нужные сервисы для сайта: Гостевая книга, Персональный форум, чат, Сообщества, Опросы и Анкеты, счетчик на странички и др. Поддерживает FTP протокол.
  • Boom.Mail.ru - бесплатный веб хостинг для простого сайта - 50 Мб дискового пространства, FTP доступ, отсутствие скриптов и баз данных, реклама на сайтах, защита от создания файл-архивов, возможность использования на своем сайте гостевой книги, голосования, счетчиков посещений, а также других сервисов Mail.ru.
  • www.NewMail.ru - Бесплатный хостинг без баннеров - 32 Мб, FTP доступ, нет серверных скриптов (PHP и ASP и др.) кроме предустановленных CGI скриптов - Форум, Гостевая книга, Голосование, Счетчик, Почтовая форма. Есть серьезные ограничения на размещаемую информацию, а также активность сайта.
  • www.Chat.ru - Сервис бесплатного хостинга -10 Мб, отсутствие скриптов и баз данных. Этот проект также большей частью для новичков, поэтому панель управления сайтом достаточно понятна, и есть конструктор сайтов.
  • www.By.ru - Неограниченный бесплатный хостинг без рекламы и баннеров -
    Предлагает очень заманчивые условия хостинга сайтов, вплоть до возможности подключить домен второго уровня, однако если вы хотите создать шибко динамический сайт, то увы, серверных скриптов кроме SSI нет, базы данных тоже отсутствуют.
  • www.TUT.by - Бесплатный Белорусский хостинг - Хостинг на белорусском портале TUT.by предлагает стабильно невысокие параметры хостинга - никаких скриптов и баз данных.
  • www.SiteCity.Ru - Бесплатный хостинг основанный на шаблонах - Так называемых шаблонный хостинг, поскольку на сайте можно сделать только то, что позволяют сделать хоть и достаточно разнообразные, но тем не менее прописанные разработчиками раз и навсегда шаблоны сайтов. Только для ленивых новичков.
  • www.Envy.nu - Бесплатный хостинг для простого сайта - Сильно урезанная версия платного хостинга, целью которого является привлечение клиентов. Места - 100 Мб, траффика - 1200 Мб. Нет скриптов, баз данных и прочих полезных функций.
  • www.ru.gg - Бесплатный хостинг и конструктор веб сайтов в одном флаконе - Типичный хостинг "для чайников". Нет никаких серьезных возможностей, кроме тех что немецкий разработчик не заложил в свою систему "конструктор сайтов". Зато аж 1000 Мб для ваших картинок и фотографий. И за это счастье размещают баннер на вашем сайте.

  • Список бесплатного хостинга (free php mysql hosting) с поддержкой скриптов PHP и баз данных MySQL:

  • www.KM.ru - Бесплатный хостинг для интересных проектов - 50 Мб для начала (потом неограниченно), PHP, MySQL, CGI/Perl и SSI, FTP - будут вам предоставлены только в том случае, если ваш проект заинтересует администрацию ресурса, так что этот сервис точно не для домашних страничек. Ставят баннер на ваши сайты.
  • www.Hut.ru - Хороший бесплатный хостинг с PHP и MySQL - 100 Мб для начала, потом могут добавить сколько нужно, можно подключить домен второго уровня, FTP, PHP, MySQL, Shell, Log файлы - это практически профессиональный платный хостинг, и всего за размещение баннера на вашем сайте!
  • www.Webservis.ru - хостинг бесплатно с CGI и PHP - 100 Мб под сайт при отсутствии базы данных не позволяет использовать какие-то серьезные скрипты для сайта, ведь большинство форумов (phpbb например) требуют базы данных. Ставят рекламу на сайт, однако всего за 5$ в месяц могут снять рекламу, подключить домен 2 уровня, включить .htaccess, и разрешить использовать MySQL.
  • www.Holm.ru - Один из самых популярных бесплатных хостингов - За размещение баннера на вашем сайте вы получите неограниченное место под ваши скрипты, поддержку PHP4, доступ к базе данных MySQL, SSI, Perl и FTP доступ к сайту.
  • www.Fatal.ru - Один из самых популярных бесплатных хостингов - Абсолютно бесплатного хостинга (free hosting) c PHP без баннеров, можно было бы назвать лидером, однако есть одно серьезное ограничение - базы данных не поддерживаются, а без них качественных сайтов не сделаешь.
  • www.Jino-Net.ru - Хостинг компания Jino.ru предлагает бесплатный сервис - Очень хорошие условия размещения сайтов, которые в большинстве случаев подходят для сайтов ориентированных на российский сегмент интернета (есть ограничение по соотношению трафика российского к зарубежному).
  • www.Eclub.lv - Латвийский бесплатный хостинг с PHP - Довольно ограниченный по возможностям использования в различных потребностях хостинг, За отдельную плату подключают базы данных MySQL.
  • www.FortuneCity.com - Бесплатный хостинг - Хостинг в основном предназначенный для привлечения дополнительных клиентов хостинг провайдеру, поскольку этот хостинг не дают тем, кому он больше всего нужен :) А ограничен он по языку страниц сайта - русский нельзя.
  • www.110mb.com - Бесплатный хостинг с PHP 5 и MySQL 5 - Заманчивое предложение среди всех остальных бесплатных хостингов - параметры очень выгодно отличаются даже от многих платных хостингов. 2GB диска и 10GB траффика! Поддерживается также Ruby On Rails и все остальные популярные функции (CURL, XML DOM, GD Library) это все без рекламы.
  • www.Zerver.ru - Бесплатное размещение сайтов. Хостинг для Joomla CMS - PHP5, MySQL база, 200Mb дискового пространства, неограниченный траффик, возможность автоматической установки и настройки системы управления контентом или форума.Требуется размещение баннера. Есть возможность за дополнительноую оплату расширить возможности хостинга.
  • www.Ayola.net - Вот где можно разместить сайт бесплатно - PHP 5, MySQL 5 база, 250Mb дискового пространства, неограниченный траффик, возможность автоматической установки и настройки системы управления контентом или форума.Требуется размещение баннера. Есть возможность за дополнительноую оплату расширить возможности хостинга.
  • www.nx0.ru - Бесплатный хостинг в обмен на размещение баннеров - PHP 4 или 5, CGI, Perl, SSI, поддержка CronJob, PhpMyAdmin, поддомены, бесплатный домен третьего уровня, неограниченный траффик, от 100mb дискового пространства. Требуется размещение баннеров.
  • www.alfaspace.net - Бесплатный хостинг сайта с PHP и CGI - Поддержка PHP и CGI, база данных(по запросу), 100Мб на диске. Регистрация только по запросу, для коммерческих проектов требуется размещение баннера.
  • www.hostland.su - Бесплатный хостинг PHP4 (safe mode off) + FTP с поддержкой Sql - Неплохой хостинг за размещение баннера. PHP, Perl, FTP, phpMyAdmin, mail(), Zend Optimizer, GD - список возможностей неплохой. А список требований к сайтам еще больше :) Но в целом предложение вполне нормальное.
  • www.miraHOST.ru - Бесплатный хостинг (Python, PHP, MySQL) и домен. - Качественный хостинг платного уровня - 400Mb, CGI, Perl, PHP, Python, SSI, MySQL, FTP + бесплатный домен для интересных проектов - за размещение на страницах вашего сайта рекламных ссылок.
  • www.intobservatory.ru - Бесплатный хостинг PHP и MySQL за ссылки - Предлагают не только хостинг бесплатно, но и домен тоже бесплатно. Помогут на начальном этапе раскрутки проекта. Но для получения хостинга, проект у вас уже должен быть готов и он должен заинтересовать администрацию. За это они разместят у вас на сайте блок ссылок.
  • www.dama-pik.ru - Хостинг с PHP и домен бесплатно - Очень серьезный хостинг и домен вы можете получить за размещение ссылок на главной странице вашего сайта.
  • www.x10hosting.com - Многоуровневый бесплатный хостинг профессионального уровня - Бесплатный хостинг который выделяет 300 MB места на диске, 10 GB трафика на хостинге с поддержкой PHP5+, MySQL 4.x, cPanel 11+. Плюс если установить на сайте баннер, то параметры хостинга станут еще лучше!

WordPress Синонимайзер... т.е плагин для WordPress'a

Человек выложил почти год назад, но многие его до сих пор ищут.... я в том числе.......
короче: ссылка на статью.
Ну и ссылка на сам архивчик, там сказано что 2008-09-16 14:15:08 умрет напроч =)

среда, 30 июля 2008 г.

Чтобы не забыть, где что брать....

Буду окучивать wordpress, вчера покопавшись в его запутанных функциях понял что его походу писало человек 15 или 1 с разчетвиренем личности.

Полезные ссылки для WORDPRESS:
http://hokdes.ru/wordpress/ - Туча ссылок на плагины иразные приблуды

http://mashable.com - более трехсот приблуд но EN

Если все это счастие перелапатить, то можно собрать: блог своей мечты, чисто новостной сайт со всеми возможностями блога, т.к новостные сайты нынче тухленкие, то их это сильно оживит, только дизайн надо будет переделать немножко =)

+ ко всему Большой колющийся .... =) переводчик Press,а

Заметки по ВОРД прессу

Впринципе есть много что почитать для понимания работы, но в глазах рябит от количества букв на фоне.... незнаю, если этот человек правит все текста в блокноте или "ее" редакторе то он просто псих.

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

вторник, 29 июля 2008 г.

1ps

пришел с утрица на работу и в данном сервисе накидал ссылок в разные каталоги, что - то эффекта с 1ps не наблюдаюется(естественно не с сайта который утром был туда внесен, а который постился 2 месяца назад яндекс из 1500 каталогов видит только 15 )))), когда поместил адский листок к себе на сайт яша его скушал и выплюнул все страницы из индекса, что за хрень... пойду курну немного winston lite 3 калории ......

По поводу SeO

Думал... потом еще думал.... что же написать, впринципе тем то, о которых хотелось написать много, но почему-то так лень....
Мда оптимизация конечно хорошо, многие увлекаются, и получается действительно вата, на которую не кто не ходит, а потом и в конце концов вообщее никто не ходит, даже роботы, так вот. Всетаки гуглисты были правы: создавайте сайты для людей... и типа все будет хорошо просто замечательно... надеюсь всетаки переборю лень и послезавтра выложу Дьявольскую смесь которая называется автоматическое наполнение сайта -) или проще говоря автосайт для привлечения посетителей без лишних усилий.

Проанализировав как ведутся блоги можно сделать некоторые выводы....



а это ---------------------------->
такая нормальная погодка =)
Автодору надо по самые гланды вставить за то что нихера в течении 4 лет не придумали. каждый год такая порнография

понедельник, 28 июля 2008 г.

Как заработать на траффике или конвертируем китайцев и дойчландеров в монету.

Как заработать на траффике или конвертируем китайцев и дойчландеров в монету.

На самом деле все началось с того, что начальство решило посмотреть что же такое
счетчик посещений, незнаю на какие ресурсы оно решило сходить (хотя на самом
деле знаю =)) и заявило: "мне интересно знать с каких компьютеров заходят
пользователи", будучи сильно ленивым, спросил, вам нужны характеристики компьтеров?
их частота процессора? видеокарта и объем памяти? =)). Естественно получил,
странно вразумительный ответ: "Из каких городов к нам приходят на сайт? По каким
поисковым запросам нас находят?". Тут у меня настало шоковое состояние, как-то
не охото в пятницу вечером что ли бо делать, да и вообще делать на ПК - ДОСТАЛО
В КОНЕЦ.

До конца рабочего дня шефа оставалось минут 30, пришлось искать методы быстрого
решения "проблеммы". Зайдя в Гугл по запросу: "базы IP по городам России", найдены
были какие-то странно дешевые, аля работающие! и востребованные базы сомнительного
содержания, не раз приходилось покупать в инете дешевые, от производителя,
китайские корпуса для сотовых телефонов....

Благо в интернете существуют места где люди всетаки как-то общаются на адекватные
темы, было найдено 2 каталога IP адресов, один по странам, другой по городам России.
По городам России http://ip2city.ru/ , не знаю на сколько адекватные, но сравнивать
не счем было. Прикрутил к 2ух месячной статистике, построил круговую диаграмму
Шефа сразу обрадовалась... и потом ничего не говорила....

Увидев существования Базы по странам (http://ip-to-country.webhosting.info/)
в душу заползло что-то не понятное, тыкая
сонно в чуже блоги обнаружил на одном из них Добрую Контору, клавиша демо
меня порадовала. Полез смотреть статистику,
какой же очередной алень решил отправить заявление о том как же мы не правильно
работаем. Оказалось что это не алень а китаец =). Чего тебе надобно страче...

И его IP в банлисте. через 5 минут пришло еще 5 китайцев с разными IP, хотя может
это и не китайцы вовсе были, смотрю бан лист растет, уже превратился в целую подсеть.

Мысль мгновенно пролетала и оставила веселый осадок, денежный банный лист - просто
замечательно, китайцам явно нечего делать на русском гос. сервере. В понедельник
уже используя базу ip-to-country и ключевые porno, lesbos англицкие слова, для Yahoo,
соорудил забавный бан лист, для всех инакоязычных Ip адрессов, Yahoo довольно кушал
бан контент, а вот посетителей ждал сюрприз при движении мышкой над данным листом
(вспоминая дыры БК). Контора хорошая, если попал
к ним, то держит крепко на сколько возможно. И китайцы рады и мне забавно.

Ближе к делу.

Сначало нам ведь надо понять действительно ли человек пришел не из россии или
хотябы СНГ, ну т.е понять понимает ли он буковки на кириллице,
для этого надо определить его местонахождение по IP адресу, естественно что
если он пришел через прокси, то его тоже направит туда же куда мы захотим,
но подумав и ответив на вопрос: зачем человек заходит на сайт через прокси сервер?
нормальный человек не будет шифроваться и скрывать свой IP ну незачем ему это,
для него главная цель - найти инормацию или просто посмотреть веселые картинки.

Ну да ладно.

0,95 ШАГ .для этого регистрируемся в Конторе

1 ШАГ.

Нужно взять более менне свежие базы IP адресов, а то окажется что соседа по
дому слил добрым дядькам =)... идем и качаем CVS файл .

2 ШАГ. если хостинГ или это

позволяет использовать PHP + MySQL, то создаем там таблицу вида
(это для файлика all_networks.csv) качать с сайта: http://ip2city.ru/

CREATE TABLE `ip2city_networks` (
`CountryCode` char(2) NOT NULL default '',
`CityID` int(5) NOT NULL default '0',
`IPFrom` double NOT NULL default '0',
`IPTo` double NOT NULL default '0',
`NetName` varchar(75) NOT NULL default '',
KEY `Code` (`IPFrom`,`IPTo`)
);

3 ШАГ создали? Хорошо. Теперь нужно импоритровать скачанный нами файл в нашу табличку:
выполняем sql запрос:

LOAD DATA INFILE '/home/all_netwoks.csv' INTO TABLE `ip2city_networks`
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

Краткое описание: /home/all_netwoks.csv - это естественно путь где лежит наш
файл, INTO TABLE `ip2city_networks` - вставить в такую-то таблицу данные,
линии разделяются переносом строки.

можно проэксперемментировать в денвере конечно, там удобно это делать.
вот теперь запросом вида:

$sql = 'SELECT CountryCode, CityID, NetName
FROM `ip2city_networks`
WHERE (`IPFrom` < '.$ip_num.') AND ('.$ip_num.'< `IPTo`)';

можно выковыривать оттуда нужные значения... теперь рассмотрим для крутого справочника значений IP 'Это у нас ip-to-country.csv' для него нужно создать немножко другую базу, чтобы в голове ничего не перепуталось названия значений у таблицы будут примерно одинаковые:

CREATE TABLE `ip2w_n`
( `IPFrom` double NOT NULL default '0',
`IPTo` double NOT NULL default '0',
`CountryCode` char(2) NOT NULL default '',
`CityID` char(5) NOT NULL default '0',
`Gos` varchar(75) NOT NULL default '',
KEY `Code` (`IPFrom`,`IPTo`) );

Так вот теперь у нас получилось, табличка, надо засунуть в нее значения. делаем запрос вида: качать с сайта http://ip-to-country.webhosting.info/:

LOAD DATA INFILE '/home/ip-to-country.csv' INTO TABLE `ip2w_n` FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

т.к впринципе оба csv файла одинаково скомпановыны, то импорт тоже похож и запрос в БД впринципе тоже похож...

Получилось, что у нас в БД лежат какие-то цыфры с буквами, не все так страшно как мне кажется =)....

Так, надо наверно это куда-то встроить, и помочь добрым китайцам или великой америке получать немножко добра, они любит всякие такие штуки радостные. Т.к лень двигатель прогресса и в данный момент изучать ничего нового не охото будем встраивать в нюку, если есть пожелания встроить это куда-то в другое место пишите... 2.1 ШАГ.... Создание мега коварного тестового блока по захвату вселенной т.к блок - удобный инструмент.... допустим у вас есть блок с какой-нибудь информацией для посетителей или просто реклама, да на самом деле не важно, можно даже и в тело главно скрипта,пусть даже навигация.... создаем файлик: block-dieUSA.php в него запишем: <?php



if (eregi("block-dieUSA.php",$_SERVER['PHP_SELF'])) {

Header("Location: index.php");

die();

}

global $db;

if($result = $db->sql_query("SELECT Gos FROM `ip2w_n`

WHERE (`IPFrom` <= ".ip2long($_SERVER['REMOTE_ADDR']).")

AND (".ip2long($_SERVER['REMOTE_ADDR'])."<= `IPTo`)"))

{

while ($row = $db->sql_fetchrow($result)) {

$content = $row['Gos']."тут есть какая-то чтука"; //наеюсь понятно куда писать магические коды для системы =)

}$db->sql_freeresult($result);} else {$content = "запрос не удался!";}

?>

ну вот получилася блок который собственно определяет принадлежность человека к
стране, но забыли совсем про роботов, которые в основном должны приводить клиентов
на сайт, а иначе зачем тогда все это делается?
Но ведь есть довольно простой элемент для проверки роботов, т.к думаю
не все же захотят чтоб их сайт не могли индексировать.

Так теперь модифицируем код для определения присутствия нужного поискового робота:<?php



if (eregi("block-dieUSA.php",$_SERVER['PHP_SELF'])) {

Header("Location: index.php");

die();

}

global $db;

$userag = online_robots(online_skip($_SERVER['HTTP_USER_AGENT']));

if ($userag =="") {

if($result = $db->sql_query("SELECT Gos FROM `ip2w_n` WHERE

(`IPFrom` <= ".sprintf("%u",ip2long($_SERVER['REMOTE_ADDR'])).") AND

(".sprintf("%u",ip2long($_SERVER['REMOTE_ADDR']))."<= `IPTo`)"))

{

while ($row = $db->sql_fetchrow($result)) {

$content = $row['Gos']."";

}$db->sql_freeresult($result);} else {$content = "запрос не удался!";}

} else {$content ="Какой-нибудь ваш добрый контент для робота";}

function online_robots($useragent) {

global $r_or;

$r_or=false;

$remap_agents = array (

'antabot' => 'antabot (private)',

'aport' => 'Aport',

'Ask Jeeves' => 'Ask Jeeves',

'Asterias' => 'Singingfish Spider',

'Baiduspider' => 'Baidu Spider',

'Feedfetcher-Google'=> 'Feedfetcher-Google',

'GameSpyHTTP' => 'GameSpy HTTP',

'GigaBlast' => 'GigaBlast',

'Gigabot' => 'Gigabot',

'Accoona' => 'Google.com',

'Googlebot-Image' => 'Googlebot-Image',

'Googlebot' => 'Googlebot',

'grub-client' => 'Grub',

'gsa-crawler' => 'Google Search Appliance',

'Slurp' => 'Inktomi Spider',

'slurp@inktomi' => 'Hot Bot',

'lycos' => 'Lycos.com',

'whatuseek' => 'What You Seek',

'ia_archiver' => 'Alexa',

'is_archiver' => 'Archive.org',

'archive_org' => 'Archive.org',

'YandexBlog' => 'YandexBlog',

'YandexSomething' => 'YandexSomething',

'Yandex' => 'Yandex',

'StackRambler' => 'Rambler',

'WebAlta Crawler' => 'WebAlta Crawler',

'igdeSpyder' => 'igdeSpyder',

'Yahoo' => 'Yahoo',

'zyborg@looksmart' => 'WiseNut',

'WebCrawler' => 'Fast',

'Openbot' => 'Openfind',

'TurtleScanner' => 'Turtle',

'libwww' => 'Punto',

'msnbot' => 'MSN',

'MnoGoSearch' => 'mnoGoSearch',

'booch' => 'booch_Bot',

'WebZIP' => 'WebZIP',

'GetSmart' => 'GetSmart',

'NaverBot' => 'NaverBot',

'Vampire' => 'Net_Vampire',

'ZipppBot' => 'ZipppBot',

'Begun' => 'Begun Robot Crawler',

'W3C_Validator' => 'W3C Validator',

'W3C_CSS_Validator' => 'W3C CSS Validator',

);

//Список нужных роботов...

$remap_agents=array_change_key_case($remap_agents, CASE_LOWER);

$pmatch_agents="";

foreach ($remap_agents as $k => $v) {

$pmatch_agents.=$k."|";

}

$pmatch_agents=substr_replace($pmatch_agents, '', strlen($pmatch_agents)-1, 1);

if (preg_match( '/('.$pmatch_agents.')/i', $useragent, $match ))

if (count($match)) {

$r_or = @$remap_agents[strtolower($match[1])];

}

return $r_or;

}

function online_skip($text) {

$text=mysql_escape_string($text);

$text=stripslashes($text);

$text = str_replace("'",'`',$text);

$text = str_replace('"','`',$text);

return $text;

}

?>

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

Подобным планом можно подсовывать забугорным ребятам всё, что угодно.
Если отойти от Базы Данных, то можно приспособить естественно функцию и для того,
чтоб сайты своей компании работали на SAPE и LINKFEED, конечно будет немного
нарушение правила размещения ссылок, но все равно на сайте приличной компании
директор смотрит, что находиться на сайте и не даст их размещать =).

Если у сайта маленький тИЦ и PR, то тоже нет смысла иметь скрытые ссылки,
в моей конторе тИЦ - 1800 - не много конечно,
но моим сайтам почему-то дал прирост в 50 тИЦ не ясно почему так много, не волнуйтесь
эти сайты никуда не выкладывал и не кто не знает кто ими правит =)))

ВЫВОДЫ: Поставленная задача была решина в полном объеме и весь драгоценный
забугорный траффик будет перенаправлен на нужную нам страницу.
В принциепе данным методом можно встроить в любую CMS, главное знать метод
формирования. Ну и собственно можно в блок и не встраивать, а в само тело CMS.
Это уже на ваше усмотрение.

Минусми данных действий является то, что ip адреса появляются новые
и время от времени, нужно будет обнавлять данную базу для поддержания ее в
актуальном состоянии.

Сам процесс выборки довольно весомый, время запроса к БД вырастает в 10 раз,
если сайт размещать на платном хостинге, то это не имеет большого смысла так как
для сервера это не будет большой нагрузкой.

В целях малой оптимизации можно удалить из базы Российские, Казахстанские IP адреса.

Как-то странно получается сайты становяться двуличными как люди.....

четверг, 24 июля 2008 г.

Зарабатываем недвижимое.: PHP-NUKE HZ edition, скомпановал немножко CMS

Зарабатываем недвижимое.: PHP-NUKE HZ edition, скомпановал немножко CMS

Хостинг... и его другая сторона - партнерские программы

Всетаки определился с хостингом =), решил деньги не тратить, конечно на РБК получиться прикольно 5Гб и 10 баз, но нашел где-то5 партнерских программ у хостеров, если время размещения сайта не завтра, то можно спокойно наработать в этих программах, а потом уже соответственно размещаться. цены у всех примерно одинаковые и параметры серверов тоже, так что регистрируйтесь по ссылкам. Буду ждать зарплаты....

Программы которые нашлись: TAGhosting - долго работает и послухам выплачивает деньгу нормально
Партнерская программа ТаймВэб. 30-40% за оплаченные заказы. - www.timeweb.ru/partnership.htm - тоже вроде адекватно, т.к походу новые

ну соответственно монстр рынка ПЕТЕРХОСТ - у него подороже зато очень давно =)

PHP-NUKE HZ edition, скомпановал немножко CMS

В общем в систему добавлен модуль новости(стандартный остался) привязал к нему теги, и настроил динамический keywords, keywords работает так: если поля при заполнении оставить пустыми, то сгенирруются слова и автоматически добавяться в базу, можете также в ручную их прописать, также есть поле теги, в него записывать надо ключевые слова, по которым будут сортироваться новости, из-за великого Яндекса пришлось блок теги сделать NOINDEX т.к это он считает великим спамом, все равно для пользователей, к этому блоку можно настроить стили и он соответственно будет выглядить как настоящее облако тегов.

Так же в данном модуле присутствуют динамические title, что делает каждую страничку разной и поисковички не будут ругаться, а будут тихонько индексировать.

Добавлены скрипты для систем SAPE и LINKfEED, собственно для зарабатывания деньги, кто хочет может по данным ссылкам зарегистрироваться и работать, к сапе прикручен скрпит великого laslo для скрытия продажных ссылок, вроде как работает...



Делалось давно,решил выложить так сказать народу(на самом деле просто челвок попросил ему немного поковырять его сайт вот и доковырялся), некоторые запросы закешированы, не все, просто имеет смысл их оставить т.к они сильно не нагружают, потестили на нормальном сервере у которого хороший процессор.



Убрано коварно-нелепый счетчик посещений, которым не кто не когда не пользуется, пересмотрена безопасность проверки переменных, главная страница и конфиг скинуты в файл и к ним запрещен доступ с сервера, добавлен блок ярлыки (интересно стало как все-таки создаются теги вот и пришлось написать ярлыки, похоже на облако тегов, только меняется не размер, а показывается количество слов, по желанию можете найти скрипты которые по количеству слов вам подсчитают размер букв для облака).



В свое время тоже парился с кодировкой, по этому сделал сразу при соединении с сервером чтоб ощение шло через cp1251, так что проблемм с кодировкой и вопросиками не должно быть.



Убраны в админке постоянные запросы для добавлениея новых модулей, ну не добавляю я новых модулей каждый 5 секунд я просто мышкой по ссылкам хожу, а представляете если у вас было бы хотябы 60 модулей? ваш адский сервер при 50 посетителях просто лежалбы. Короче если добавили новый модуль достаточно просто нажать на обновление модулей в админке и они добавяться.

Не оптимизировано голосвание т.к отличный AJAX вариант еть на сервере русской поддержки, новости(родные) они тоже опитимизировали. Так что вроде проблемм с системой должно возникнуть.

Регистрация пользователя по емайлу включается и выключается в ощих настройках системы, также возможно использовать русские имена.

В User_Info добавил любимую функцию определения ботов, место нахождения не стал прикручивать, т.к просто спать хотелось =)

P.S перед загрузкой и компановкой данного пакета посмотрел что сделали на рус-нюке, кажется странным зачем кешировать все блоки, а как же то, что меняется время от времени, конечно можно спокойно закешировать новости в БД и не тоскать их с голосованием каждый раз..... и надо бы поменять скрипт сжатия, и поставить довольно простой типа как в книжках пишут, почему? да потому-что если сайт зажимать, он весит горазда меньше, что позволяет его модемщикам качать (немного дольше чем просто страницу с текстом =) ), если сжатие не применимо, то оно работать не будет, соответственно смысл в кнопке включения, выключение сжатия пропадает.

P.S2 Дойдут руки доделаю web_links, у мну на сайте было: прямые ссылки и проверка обратной ссылки, что естественно поднимало индекс цитирования, но сейчас помоему прошла перетрубация и это уже не так сильно наращивает тИЦ. ссылка на файлик

Такой же файлик выложил на RUS-phpnuke - че-то долго не дабавляют, похоже че-то правят или не хотят добавлять, странно это....

среда, 23 июля 2008 г.

Блоги, психологический портрет или просто бред

Сегодня прийдя на работу поймал себя на мысли, что первым делом (после включения компа) зашел на статистику сайта, думал: ;№"я что - то народ не ходит, пошел смотреть как сайт в яндексе живет, оказывается нету его в яндексе посмотрел в гугле, там только 2500 страничек какого-то старого католога, который пришлось убить из-за траффика, но это наоборот было хорошо(в моем случае халява не прокатила т.к траф получался выливается в копеечку). Налил себе кофе, пошел курить на крыльцо, мимо проходили объемные женщины весом так в 120 Кг, они каждый день приходят когда я выхожу курить с кофе, и нашло.

Так продолжается уже 3 месяца, сверясь с часами стало понятно: тваю мать так они же в одно время приходят не зависимо от меня естественно и я как последний кретин, проверив статистику, почту, прочую хрень выхожу курить.... Такое ощущение что в замкнутом круге нахожусь не только я один, да и многие люди, в АДСКОЙ ПЕТЛЕ, котороя постоянно в себя затягивает и всех кто пытается из нее вырваться возвращает обратно.

Так походу и с блогами получается пришел такой обычный человек в блогосферу(сам того не понимая и думая, что он там один такой хороший и умный и сумеет привлечь людей, заработать). Развиваясь с каждым прочтением новых сообщений в блоге =) видит что он становиться мега монстр и даже пускай что-то зарабатывает, как правило подписавшись на чью-то ленту постит похожие статьи и пишет:[Я УМНЫЙ И МНОГО УМЕЮ И ЕЩЕ ВОТ МАЯ СВЕЖАЯ ИДЕЯ!]. Комментировать его идею как-то бессмысленно потому-что видно что он несет конкретную чушь и ахинею. Ну ничего в принципе тоже несу =).

В нете много народу... Бамжарики работают мозгом и способны читать текст в котором нету картинок, лишь только буквы, потому-что им нужна информация, а не удовлетворение зрительного нерва.

Офисные сотрудники им бы реально где - нибудь почитать эрорасказики, эрокартиночки, приватики, веслые картиночки .... и видео посмотреть. Люди которые зарабаттывают как сетивые маркетологи на куче пирамид из ссылок, рефералов, доров, сателитов в основном пользуются ГУГЛОМ, так как в Ящу значительно поднасрали =) и он шокировавшись выдает не понятно что....

Почитав Баш орг 2 раза понял что ничего нового он как-то не приносит только в мозг тупняк поступает. Классический дебилизатор.

Манимекеры прийдя в место где у него стоит комп с интернетом начинает смотреть статистику, кто на него сослался, может товарищ по разуму что-то дельное написал и интересное, есть такие люди их не так и много. Зато много Кать Гордонов, которые пишут лайфжурналы и выплескиавют на читателя свою, по большей части, гнилую натуру. Катю знают катю ищут в интернете =) , а как же быть с теми кого не ищут, они пишут и пишут, про то какже печальна жизнь....

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

поставлю и посмотрим кто же вернется и посмотрит что тут есть, если нет то значит глобально не прав и весь поток сознания идет не верно и взаимосвязь с online и offline миром нарушена.......

Какой-то шибко умный парень либо сильно ворующий слова у laslo Либо laslo
Жилин Сергей Павлович. День рождения 29-го июля. Родился и живет в Ижевске
Ну а теперь пойдут полу профи =) почему полу, потому-что неизвестно сколько зарабатывают хотя пишут что много (Это мое личное так что не обижаться!=))))
Уникальний человеГ
Безколесный лютый адский ЧЕЛ
хмм.... да похер ковырну ссылки с его поста что прочитал:

Chipp - социальная сеть для блогеров и манимейкеров

Хочу в ночлежку! Что-то я забываю дать ссылку. Дружно кликаем на нее, а то поеду в Минск скоро, а ночевать то, блин, негде будет! =)

продвижения сайтов с помощью XAP (TNX) - доступнее не бывает!

Ну а если кто еще не знает про этот блог, то напоминаю, что есть такой блог Ольги Ивановой - женский взгляд на интернет маркетинг

Ужин на троих: Гугл, Рамблер и Бегун

Это может быть только в России! Зацепило…

Лучший блог хостинг. Только индивидуальный подход. Домен в подарок.
Кистевой тренажер

Типа конец его ссылок

Приезжий - будущий Маскаль, мучующийся квартирным вопрос или уже нет...
Не Печально Не унылый адский мегатормоз

вторник, 22 июля 2008 г.

cms - движок как выбриратьих?

Сижу и думаю, как надоело просто тупо Брать и устанавливать cms.... за это получаешь копейки, а у людей за один раз ворют по 1,5 миллиона рублей, вырывают пакет пока человек из банка до машины идет и забирают, мда странно это все и не чего не поделать... печаль короче... зарабатывает же кто-то 8-) а мне гребаный мир продает неработающие холодильники КАЗЛЫ чтобы у вас в регионах все прогарело..... чето крышу опять сорвало =)....

воскресенье, 20 июля 2008 г.

Оптимизация сайта на движке PHP-Nuke.

Решил выложить оптимизацию нюки или как тренировался на ней, в следствии того что

когда подумал о создании сайта, люди посоветовали: ты что будешь писать сайт сам?

Ну ты дурак, есть же готовые сайты CMS называются, и дали адрес где можно скачать,

это была 8 я русская версия php-nuke. Подумал: что за хрень? И давай искать другие

cms системы. Наткнулся на DLE, mambo, slaed, post-nuke, small-nuke, Joomla.



В историю впадать не буду, ближе к телу. Короче, на тот момент для меня был понятен

довольно простой язык программирования pascal и не более, посмотрев исходные файлы

cms понял, что с классами у меня напряг ничего не понимаю, в литературе довольно

доступно объяснили php - не классовый язык программирования, хотя классы более

менее полноценно ввелись в 4 версии, все сайтики с классами отпали, потом

понял что существует еще так называемая скорость работы сайта или интерпритация

кода сервером, оказалось что www.PHP-nuke.org – самая требовательная к ресурсам,

но было уже поздно, т.к на нее рисовался дизайн, а переделывать уже не

хотелось(вот такое я ленивое дерево). Сейчас конечно многие возразят и скажут:

а 5 ка на что? Ну не доходят руки до классов, если понять их на самом деле все

просто и нету ничего страшного.



Итак, вот что получилось после некоторого времени доработки и прочего извращения.

ЕСЛИ кто-то увидит куски своего кода не обижайтесь и не пинайте ногами,

копирайты ваши поставлю, т.к не помню что от куда брал.


1. Основа: PHPNUKE_80_RUS_291006.zip =) запросов на гостя - 66. Для определения

количства запросов на сайте, делаем довлольно простую вещь: тут типа код <php>

находим любой редактор блокнот тоже подходит, но в нем не удобно смотреть,

много буковок и все сливаются, многие файлы идут *nix форматом соответственно

страдает перенос строк, я пользуюсь PSPAD адрес в интернете : www.pspad.com

качаете русскую версию и удобно смотрите, конечно есть и другие редакторы но

о них сейчас разговора нет (и мега профи с каким-нибудь образованием это читать

не будут посчитая ниже следующее бредом, но сам в свое время искал тупил не мог

в одном месте все найти решил выложить может что кому поможет),

далее, открываем файл footer.php (находиться в корневой

директории сайта, тамже где и mainfile.php, admin.php, modules.php) находи там

function footmsg() и после $total_time = ($end_time - $start_time);

дописываем:



$sqlnums= $db->num_queries;

$all= $db->all_db;

$total_time = ""._PAGEGENERATION." ".substr($total_time,0,5)." Секунд";

$total_time.=' <br>Время запроса к БД: '.$all;



if (file_exists(INCLUDE_PATH."admin/config_rus.php")) {

include(INCLUDE_PATH."admin/config_rus.php");

if ($show_sqlcount==true) {

global $db;

$sqlnums= $db->num_queries;

$total_time .= " и ".$sqlnums." запросов к БД";

}

} // это помоему из очередного коварного релиза на rus-phpnuke.com



в этом же файле находим сроки:

themefooter();

if (file_exists("includes/custom_files/custom_footer.php")) {

include_once("includes/custom_files/custom_footer.php");

}



И после них добавляем:



// Показ запросов, произведенных к БД при формировании страницы

if (file_exists(INCLUDE_PATH."admin/config_rus.php")) {

include(INCLUDE_PATH."admin/config_rus.php");

if ($show_debug==true) {

$sqlqueries=$db->text_queries;

echo "<center><b>Запросы к БД:</b></center><HR><font class=\"content\">

".$sqlqueries."</font>";

echo "<BR>";

}

}





Потом открываем: db/mysql.php, находим там функцию:

function sql_query($query = "", $transaction = FALSE)


заменеяем её на:

function sql_query($query = "", $transaction = FALSE) {// Remove any pre-existing queries

unset($this->query_result); if($query != ""){

$time1 = microtime();

$this->query_result = @mysql_query($query, $this->db_connect_id); $time2 = microtime();

$time3= explode(" ",$time1);

$time4= explode(" ",$time2);

$time_result=(float)$time4[1]-(float)$time3[1]+(float)$time4[0]-(float)$time3[0];

$this->all_db+=$time_result; } if($this->query_result) {

$this->num_queries += 1;

$this->text_queries.="<BR>".$query." $time_result";

unset($this->row[$this->query_result]);

unset($this->rowset[$this->query_result]);

return $this->query_result; } else {

return ( $transaction == END_TRANSACTION ) ? true : false; }}




так теперь самое главное копируем: файлы из папки в корень директории. или создаем свои:

ТУТ ТИПА АРХИВЧИГ. - если нету свойства рус нук ставиться в корень сайта

теперь заходим в админ панель и свойства_rus там ставим что показывать или не показывать.

2. Создаем папку config в корневом каталоге. Теперь превратим один

конфигурационный запрос в файлик (открываем mainfile.php):

Находим строки:

$result = $db->sql_query("SELECT * FROM ".$prefix."_config");

$row = $db->sql_fetchrow($result); $sitename = filter($row['sitename'], "nohtml");

-------- // типа много такихже фильтров.....

$copyright = filter($row['copyright']);

$Version_Num = filter($row['Version_Num'], "nohtml");

Перед $result добавим:

if (!file_exists("cache/global.php")) {


После $Version_Num = filter($row['Version_Num'], "nohtml"); надо поставить:

$content1 = "\$version = \"php-nuke(8.1)\";\n";

$content1 .= "\$sitename = \"$sitename\";\n";

$content1 .= "\$nukeurl = \"$nukeurl\";\n";

$content1 .= "\$site_logo = \"$site_logo\";\n";

$content1 .= "\$slogan = \"$slogan\";\n";

$content1 .= "\$startdate = \"$startdate\";\n";

$content1 .= "\$adminmail = \"$adminmail\";\n";

$content1 .= "\$anonpost = \"$anonpost\";\n";

$content1 .= "\$Default_Theme = \"$Default_Theme\";\n";

$content1 .= "\$overwrite_theme = \"$overwrite_theme\";\n";

$content1 .= "\$foot1 = \"$foot1\";\n";

$content1 .= "\$foot2 = \"$foot2\";\n";

$content1 .= "\$foot3 = \"$foot3\";\n";

$content1 .= "\$commentlimit = \"$commentlimit\";\n";

$content1 .= "\$anonpost = \"$anonpost\";\n";

$content1 .= "\$minpass = \"$minpass\";\n";

$content1 .= "\$pollcomm = \"$pollcomm\";\n";

$content1 .= "\$articlecomm = \"$articlecomm\";\n";

$content1 .= "\$broadcast_msg = \"$broadcast_msg\";\n";

$content1 .= "\$my_headlines = \"$my_headlines\";\n";

$content1 .= "\$top = \"$xtop\";\n";

$content1 .= "\$storyhome = \"$storyhome\";\n";

$content1 .= "\$user_news = \"$user_news\";\n";

$content1 .= "\$oldnum = \"$oldnum\";\n";

$content1 .= "\$ultramode = \"$ultramode\";\n";

$content1 .= "\$banners = \"$banners\";\n";

$content1 .= "\$backend_title = \"$backend_title\";\n";

$content1 .= "\$backend_language = \"$backend_language\";\n";

$content1 .= "\$language = \"$language\";\n";

$content1 .= "\$locale = \"$locale\";\n";

$content1 .= "\$multilingual = \"$multilingual\";\n";

$content1 .= "\$useflags = \"$useflags\";\n";

$content1 .= "\$notify = \"$notify\";\n";

$content1 .= "\$notify_email = \"$notify_email\";\n";

$content1 .= "\$notify_subject = \"$notify_subject\";\n";

$content1 .= "\$notify_message = \"$notify_message\";\n";

$content1 .= "\$notify_from = \"$notify_from\";\n";

$content1 .= "\$moderate = \"$moderate\";\n";

$content1 .= "\$admingraphic = \"$admingraphic\";\n";

$content1 .= "\$httpref = \"$httpref\";\n";

$content1 .= "\$httprefmax = \"$httprefmax\";\n";

$content1 .= "\$httprefmode = \"$httprefmode\";\n";

$content1 .= "\$CensorMode = \"$CensorMode\";\n";

$content1 .= "\$CensorReplace = \"$CensorReplace\";\n";

$content1 .= "\$copyright = \"$copyright\";\n";

$content1 .= "\$Version_Num = \"$Version_Num\";\n";

$fo = fopen("config/global.php", 'w+');

$content1 = "<?php\nif (!defined(\"NUKE_FILE\")) die(\"Illegal File Access\");

\n\n".$content1."\n?>";// - 'эту строку после создания файала можно удалить'

fwrite($fo,$content1);

fclose($fo);

unset($content1);

} else {

include('config/global.php');

}




потом после создания config/global.php можно весь текст поменять на:

include('config/global.php');


получиться:



// Error reporting, to be set in config.php

if($display_errors = 1) {

ini_set('display_errors', 1);

error_reporting(E_ALL^E_NOTICE);

} else {

ini_set('display_errors', 0);

error_reporting(0);

}



define('NUKE_FILE', true);

include('config/global.php');

т.е меняем смело всю колонку на: include('config/global.php');

начинается медленно закрадываться сомнение, что это получается ?

было так много?? А стало одна строчка?! Не одна…

добавляем в конец mainfile.php перед ?> :
function save_conf($fp, $content, $type="") {

if (file_exists($fp) && $content) {

$fp = fopen($fp, "w");

$content = (intval($type)) ? "<?php\nif (!defined(\"ADMIN_FILE\"))

die(\"Illegal File Access\");\n\n".$content."\n ?> " : " <?php\n

if (!defined(\"NUKE_FILE\")) die(\"Illegal File Access\"); \n\n ".$content." \n ?>";

fwrite($fp, $content);

fclose($fp);

}

}



Если попытаетесь проверить и посмотреть что получиться то увидите белый экран,

это нормально, т.к все основные переменные должны быть в файле.

Далее открываем

admin/modules/settings.php и смотрим что там за вата такая,

находим:
$row = $db->sql_fetchrow($db->sql_query("SELECT sitename, nukeurl,

site_logo, slogan, startdate, adminmail, anonpost, Default_Theme, foot1,

foot2, foot3, commentlimit, anonymous, minpass, pollcomm, articlecomm,

broadcast_msg, my_headlines, top, storyhome, user_news, oldnum,

ultramode, banners, backend_title, backend_language, language, locale,

multilingual, useflags, notify, notify_email, notify_subject,

notify_message, notify_from, moderate, admingraphic, httpref,

httprefmax, CensorMode, CensorReplace from ".$prefix."_config"));

$sitename = filter($row['sitename'], "nohtml", 0, preview);

--------------- // куча всяких переменных

$httprefmax = intval($row['httprefmax']);

$CensorMode = intval($row['CensorMode']);

$CensorReplace = filter($row['CensorReplace'], "nohtml");




и все это многообразие меняем на:

include("config/global.php");
находим:

case "ConfigSave":

global $prefix, $db, $admin_file;

до строк:

Header("Location: ".$admin_file.".php?op=Configure");

break;


все что между этими строками меняем на:

$content = "\$version = \"php-nuke(8.1)\";\n";

$content .= "\$sitename = \"$xsitename\";\n";

$content .= "\$nukeurl = \"$xnukeurl\";\n";

$content .= "\$site_logo = \"$xsite_logo\";\n";

$content .= "\$slogan = \"$xslogan\";\n";

$content .= "\$startdate = \"$xstartdate\";\n";

$content .= "\$adminmail = \"$xadminmail\";\n";

$content .= "\$anonpost = \"$xanonpost\";\n";

$content .= "\$Default_Theme = \"$xDefault_Theme\";\n";

$content .= "\$overwrite_theme = \"$xoverwrite_theme\";\n";

$content .= "\$foot1 = \"$xfoot1\";\n";

$content .= "\$foot2 = \"$xfoot2\";\n";

$content .= "\$foot3 = \"$xfoot3\";\n";

$content .= "\$commentlimit = \"$xcommentlimit\";\n";

$content .= "\$anonpost = \"$xanonpost\";\n";

$content .= "\$minpass = \"$xminpass\";\n";

$content .= "\$pollcomm = \"$xpollcomm\";\n";

$content .= "\$articlecomm = \"$xarticlecomm\";\n";

$content .= "\$broadcast_msg = \"$xbroadcast_msg\";\n";

$content .= "\$my_headlines = \"$xmy_headlines\";\n";

$content .= "\$top = \"$xtop\";\n";

$content .= "\$storyhome = \"$xstoryhome\";\n";

$content .= "\$user_news = \"$xuser_news\";\n";

$content .= "\$oldnum = \"$xoldnum\";\n";

$content .= "\$ultramode = \"$xultramode\";\n";

$content .= "\$banners = \"$xbanners\";\n";

$content .= "\$backend_title = \"$xbackend_title\";\n";

$content .= "\$backend_language = \"$xbackend_language\";\n";

$content .= "\$language = \"$xlanguage\";\n";

$content .= "\$locale = \"$xlocale\";\n";

$content .= "\$multilingual = \"$xmultilingual\";\n";

$content .= "\$useflags = \"$xuseflags\";\n";

$content .= "\$notify = \"$xnotify\";\n";

$content .= "\$notify_email = \"$xnotify_email\";\n";

$content .= "\$notify_subject = \"$xnotify_subject\";\n";

$content .= "\$notify_message = \"$xnotify_message\";\n";

$content .= "\$notify_from = \"$xnotify_from\";\n";

$content .= "\$moderate = \"$xmoderate\";\n";

$content .= "\$admingraphic = \"$xadmingraphic\";\n";

$content .= "\$httpref = \"$xhttpref\";\n";

$content .= "\$httprefmax = \"$xhttprefmax\";\n";

$content .= "\$httprefmode = \"$xhttprefmode\";\n";

$content .= "\$CensorMode = \"$xCensorMode\";\n";

$content .= "\$CensorReplace = \"$xCensorReplace\";\n";

$content .= "\$copyright = \"$xcopyright\";\n";

$content .= "\$Version_Num = \"$xVersion_Num\";\n";

save_conf("config/global.php", $content);




3. Ну теперь наверное самое простое =).

избавимся от счетчика,который находиться внутри портала, поразмыслив можно понять

что на свете существует множество серверов со статистикой: рамблер топ, лайфинтернет,

маил, и.д и.п....

открываем файл header.php и комментируем строку: include("includes/counter.php");

4. Модифицируем функцию слежения за пользователем, типа кто присутствует на сайте

и в каком количестве.не будем те адреса котоые ни как не определются.

Находим функцию:

function online() {

global $user, $prefix, $db, $userinfo;

$ip = $_SERVER["REMOTE_ADDR"];

$guest = 0;

$uname = $userinfo['username'];

if (!$uname) {

$uname = "$ip";

$guest = 1;

}

$past = time()-300;

$db->sql_query("DELETE FROM ".$prefix."_session WHERE time < '$past' OR uname='".addslashes($uname)."'");

$ctime = time();

if ($uname!="") {

$uname = substr("$uname", 0,25);

$db->sql_query("INSERT INTO ".$prefix."_session (uname, time, host_addr, guest)

VALUES ('$uname', '$ctime', '$ip', '$guest')");

} $db->sql_freeresult($result);

}

меякм на:

function ip(){

if( getenv('REMOTE_ADDR'))

{$user_ip = getenv('REMOTE_ADDR');}

elseif( getenv('HTTP_FORWARDED_FOR'))

{$user_ip = getenv('HTTP_FORWARDED_FOR');}

elseif( getenv('HTTP_X_FORWARDED_FOR'))

{$user_ip = getenv('HTTP_X_FORWARDED_FOR');}

elseif( getenv('HTTP_X_COMING_FROM'))

{$user_ip = getenv('HTTP_X_COMING_FROM');}

elseif( getenv('HTTP_VIA'))

{$user_ip = getenv('HTTP_VIA');}

elseif( getenv('HTTP_XROXY_CONNECTION'))

{$user_ip = getenv('HTTP_XROXY_CONNECTION');}

elseif( getenv('HTTP_CLIENT_IP'))

{$user_ip = getenv('HTTP_CLIENT_IP');}

else{$user_ip='unknown';}

if(15 < strlen($user_ip)){

$ar = split(', ', $user_ip);

for($i=sizeof($ar)-1; $i > 0; $i--){

if($ar[$i]!='' and !preg_match('/[a-zA-Zа-яА-Я]/', $ar[$i]))

{$user_ip = $ar[$i];

break;

}

if($i==sizeof($ar)-1){$user_ip = 'unknown';}

}

}

if(preg_match('/[a-zA-Zа-яА-Я]/', $user_ip)){$user_ip = 'unknown';}

return $user_ip;

}



function online() {

global $user, $prefix, $db, $userinfo;

$ip = ip();

$guest = 0;

$uname = $userinfo['username'];

if (!$uname) {

$uname = "$ip";

$guest = 1;

}

$past = time()-300;

$db->sql_query("DELETE FROM ".$prefix."_session WHERE time < '$past' OR uname='"

.addslashes($uname)."'");

$ctime = time();

if ($uname!="") {

$uname = substr("$uname", 0,25);

$db->sql_query("INSERT INTO ".$prefix."_session (uname, time, host_addr, guest)

VALUES ('$uname', '$ctime', '$ip', '$guest')");

} $db->sql_freeresult($result);

}

5.Оптимизируем функцию блоков чтоб был 1 запрос

Открываем mainfile.php находим:

function blocks($side) {

global $storynum, $prefix, $multilingual, $currentlang, $db, $admin, $user;

if ($multilingual == 1) {

$querylang = "AND (blanguage='$currentlang' OR blanguage='')";

} else {

$querylang = "";

}

if (strtolower($side[0]) == "l") {

$pos = "l";

} elseif (strtolower($side[0]) == "r") {

$pos = "r";

} elseif (strtolower($side[0]) == "c") {

$pos = "c";

} elseif (strtolower($side[0]) == "d") {

$pos = "d";

}

$side = $pos;

$sql = "SELECT bid, bkey, title, content, url, blockfile, view,

expire, action, subscription FROM ".$prefix."_blocks

WHERE bposition='$pos' AND active='1' $querylang ORDER BY weight ASC";

$result = $db->sql_query($sql);

while($row = $db->sql_fetchrow($result)) {

$bid = intval($row['bid']);

$title = filter($row['title'], "nohtml");

$content = $row['content'];

$url = filter($row['url'], "nohtml");

$blockfile = filter($row['blockfile'], "nohtml");

$view = intval($row['view']);

$expire = intval($row['expire']);

$action = filter($row['action'], "nohtml");

$action = substr($action, 0,1);

$now = time();

$sub = intval($row['subscription']);

if ($sub == 0 OR ($sub == 1 AND !paid())) {

if ($expire != 0 AND $expire <= $now) {

if ($action == "d") {

$db->sql_query("UPDATE ".$prefix."_blocks SET active='0', expire='0'

WHERE bid='$bid'");

return;

} elseif ($action == "r") {

$db->sql_query("DELETE FROM ".$prefix."_blocks WHERE bid='$bid'");

return;

}

}

if ($row['bkey'] == "admin") {

adminblock();

} elseif ($row['bkey'] == "userbox") {

userblock();

} elseif (empty($row['bkey'])) {

if ($view == 0) {

render_blocks($side, $blockfile, $title, $content, $bid, $url);

} elseif ($view == 1 AND is_user($user) || is_admin($admin)) {

render_blocks($side, $blockfile, $title, $content, $bid, $url);

} elseif ($view == 2 AND is_admin($admin)) {

render_blocks($side, $blockfile, $title, $content, $bid, $url);

} elseif ($view == 3 AND !is_user($user) || is_admin($admin)) {

render_blocks($side, $blockfile, $title, $content, $bid, $url);

}

}

}

}

$db->sql_freeresult($result);

}

И польностью её меняем на код который описан ниже.

function crblocks() {

global $db,$prefix,$tableblocks;

$block_info = array();

$sql = "SELECT bid, bkey, title, content, url, blockfile, time, refresh,

view, expire, action, subscription, bposition FROM ".$prefix."_blocks

WHERE active='1' ORDER BY bposition, weight ASC";

$result = $db->sql_query($sql);



while($row = $db->sql_fetchrow($result)) {

// $refresh2 ="";

// $time2 ="";

$bid = intval($row['bid']);

$bkey = filter($row['bkey'], "nohtml");

$title = reg_ex($row['title']);

$content = stripslashes($row['content']);

$url = reg_ex($row['url']);

$blockfile = reg_ex($row['blockfile']);

$view = intval($row['view']);

$expire = intval($row['expire']);

$action = reg_ex($row['action']);

$action = substr($action, 0,1);

$refresh2 = reg_ex($row['refresh']);

$time2 = reg_ex($row['time']);

$now = time();

$sub = intval($row['subscription']);

$side = reg_ex($row['bposition']);

$block_info[] = array('bid'=>$bid, 'bkey'=>$bkey, 'title'=>$title,

'content'=>$content, 'url'=>$url, 'blockfile'=>$blockfile, 'view'=>$view,

'expire'=>$expire, 'action'=>$action, 'subscription'=>$sub,

'refresh'=>$refresh2, 'time'=>$time2, 'side'=>$side);



} $tableblocks = $block_info;

// print_r(array_change_key_case($tableblocks, CASE_UPPER));

$db->sql_freeresult($result);

//die();

}

function blocks($side) {

global $storynum, $prefix, $currentlang, $db, $admin, $user, $tableblocks;

foreach($tableblocks as $v1) {

$side2[0] = strtolower($v1['side']);

$side[0] = strtolower($side);

if ($side2[0] == "$side[0]") {

if (strtolower($side[0]) == "l") {

$pos = "l";

} elseif (strtolower($side[0]) == "r") {

$pos = "r";

} elseif (strtolower($side[0]) == "c") {

$pos = "c";

} elseif (strtolower($side[0]) == "d") {

$pos = "d";

}

$side = $pos;

if ($sub == 0 OR ($sub == 1 AND !paid())) {

if ($expire != 0 AND $expire <= $now) {

if ($v1['action'] == "d") {

$db->sql_query("UPDATE ".$prefix."_blocks SET active='0', expire='0' WHERE bid='$v1[bid]'");

return;

} elseif ($action == "r") {

$db->sql_query("DELETE FROM ".$prefix."_blocks WHERE bid='$v1[bid]'");

return;

}

}

if ($v1['bkey'] == "admin") {

adminblock();

} elseif ($v1['bkey'] == "userbox") {

userblock();

} elseif (empty($v1['bkey'])) {

if ($v1['view'] == 0) {

render_blocks($v1['side'], $v1['blockfile'], $v1['title'], $v1['content'],

$v1['bid'], $v1['url'], $v1['block_info']);

} elseif ($v1['view'] == 1 AND is_user($user) || is_admin($admin)) {

render_blocks($v1['side'], $v1['blockfile'], $v1['title'], $v1['content'],

$v1['bid'], $v1['url'], $v1['block_info']);

} elseif ($v1['view'] == 2 AND is_admin($admin)) {

render_blocks($v1['side'], $v1['blockfile'], $v1['title'], $v1['content'],

$v1['bid'], $v1['url'], $v1['block_info']);

} elseif ($v1['view'] == 3 AND !is_user($user) || is_admin($admin)) {

render_blocks($v1['side'], $v1['blockfile'], $v1['title'], $v1['content'],

$v1['bid'], $v1['url'], $v1['block_info']);

}



}

}

}

}

}

В том же файле(mainfile.php) после $start_time = $mtime; добавляем

crblocks();

В замен стандартной функции очистки переменных от лишних данных в самый конец

mainfile.php перед ?> добавим:

function reg_ex($str) {

$search = array ("'<script[^>]*?>.*?</script>'si", // Вырезает javaScript

"'<[\/\!]*?[^<>]*?>'si", // Вырезает HTML-теги

"'([\r\n])[\s]+'", // Вырезает пробельные символы

"'&(quot|#34);'i", // Заменяет HTML-сущности

"'&(amp|#38);'i",

"'&(lt|#60);'i",

"'&(gt|#62);'i",

"'&(nbsp|#160);'i",

"'&(iexcl|#161);'i",

"'&(cent|#162);'i",

"'&(pound|#163);'i",

"'&(copy|#169);'i",

"'&#(\d+);'e"); // интерпретировать как php-код



$replace = array ("",

"",

"\\1",

"\"",

"&",

"<",

">",

" ",

chr(161),

chr(162),

chr(163),

chr(169),

"chr(\\1)");



$str = preg_replace($search, $replace, $str);

return $str;

}

6. теперь займемся скоростью работы системы в целом и фильтрацией,

фильтры написаны так что сами заставлябт тупить всю систему

т.к в основном вся фильтрация

идет через функцию fileter модифицируем и её.... для это находим её:

function filter($what, $strip="", $save="", $type="") {

if ($strip == "nohtml") {

$what = check_html($what, $strip);

// $what = htmlentities(trim($what), ENT_QUOTES);

// If the variable $what doesn't comes from a preview screen should be converted

if ($type != "preview" AND $save != 1) {

$what = html_entity_decode($what, ENT_QUOTES);

}

}

if ($save == 1) {

$what = check_words($what);

$what = check_html($what, $strip);

$what = addslashes($what);

} else {

$what = stripslashes(FixQuotes($what,$strip));

$what = check_words($what);

$what = check_html($what, $strip);

}

return($what);

}

ПРиводим функцию к виду:

function filter($what, $strip="", $save="", $type="") {

if ($strip == "nohtml") {

$what = reg_ex($what);

$what = htmlspecialchars(trim($what), ENT_QUOTES, 'cp1251');

// If the variable $what doesn't comes from a preview screen should be converted

if ($type != "preview" AND $save != 1) {

$what = html_entity_decode($what, ENT_QUOTES);

}

}

if ($save == 1) {

$what = check_words($what);

$what = check_html($what, $strip);

$what = addslashes($what);

} else {

$what = stripslashes(FixQuotes($what,$strip));

$what = check_words($what);

$what = check_html($what, $strip);

}

return($what);

}

после строк:

unset($matches);

unset($loc);

if(isset($_SERVER['QUERY_STRING'])) {

if (preg_match("/([OdWo5NIbpuU4V2iJT0n]{5}) /", rawurldecode($loc=$_SERVER['QUERY_STRING']),

$matches)) {

die('Illegal Operation');

}

}




Надо добавить(для того, чтоб если на php выключено добавлние слешей к ",

это делал сам двигатель):

if (!get_magic_quotes_gpc()) {

function add_slashes($value) {

if (is_array($value)) {

$value = array_map("add_slashes", $value);

} elseif (!empty($value) && is_string($value)) {

$value = addslashes($value);

}

return $value;

}

$_GET = add_slashes($_GET);

$_POST = add_slashes($_POST);

$_COOKIE = add_slashes($_COOKIE);

$_REQUEST = add_slashes($_REQUEST);

}

Далее находим эти строчки в том же файле:

if (!defined('ADMIN_FILE')) {

foreach ($_GET as $sec_key => $secvalue) {

if ((eregi("<[^>]*script*\"?[^>]*>", $secvalue)) ||

(eregi("<[^>]*object*\"?[^>]*>", $secvalue)) ||

(eregi("<[^>]*iframe*\"?[^>]*>", $secvalue)) ||

(eregi("<[^>]*applet*\"?[^>]*>", $secvalue)) ||

(eregi("<[^>]*meta*\"?[^>]*>", $secvalue)) ||

(eregi("<[^>]*style*\"?[^>]*>", $secvalue)) ||

(eregi("<[^>]*form*\"?[^>]*>", $secvalue)) ||

(eregi("<[^>]*img*\"?[^>]*>", $secvalue)) ||

(eregi("<[^>]*onmouseover*\"?[^>]*>", $secvalue)) ||

(eregi("<[^>]*body*\"?[^>]*>", $secvalue)) ||

(eregi("\([^>]*\"?[^)]*\)", $secvalue)) ||

(eregi("\"", $secvalue)) ||

(eregi("inside_mod", $sec_key))) {

die ($htmltags);

}

}

foreach ($_POST as $secvalue) {

if ((eregi("<[^>]*onmouseover*\"?[^>]*>", $secvalue)) ||

(eregi("<[^>]script*\"?[^>]*>", $secvalue)) ||

(eregi("<[^>]*body*\"?[^>]*>", $secvalue)) ||

(eregi("<[^>]style*\"?[^>]*>", $secvalue))) {

die ($htmltags);

}

}

}

За менсто них ставим эти:

if (!defined('ADMIN_FILE')) {

foreach ($_GET as $var_name=>$var_value) {

if (preg_match("/<.*?(script|body|object|iframe|applet|meta|style|form|img|onmouseover).*?>/i",

urldecode($var_value)) || preg_match("/\([^>]*\"?[^)]*\)/", $var_value) ||

preg_match("/\"|\'/", $var_value)) die("HTML in GET - ".$var_name." = ". $var_value."");

if (preg_match("/^(http\:\/\/|ftp\:\/\/|\/\/|https:\/\/|php:\/\/|\/\/)/i", $var_value))

die("URL in GET - ".$var_name." = ". $var_value);

$security_string = "/UNION|OUTFILE|SELECT|ALTER|INSERT|DROP|".$prefix."_admins|".$prefix."_users|ModAdmin|SaveAdmin|EditAdmin|DelAdmin/i";

$security_decode = base64_decode($var_value);

if (preg_match($security_string, $security_decode))

die("Hack base64 in GET - ".$var_name." = ". $var_value."");

if (preg_match($security_string, $var_value)) die("Hack in GET - ".$var_name." = ". $var_value."");

$security_slash = preg_replace("/\/\*.*?\*\//", "", $var_value);

if (preg_match($security_string, $security_slash)) die("Hack in GET - ".$var_name." = ". $var_value."");

}

foreach ($_POST as $var_name=>$var_value) {

if (preg_match("/<.*?(script|body|object|iframe|applet|meta|style|form|onmouseover).*?>/i", urldecode($var_value)))

die("HTML in POST - ".$var_name." = ". $var_value."");

if (preg_match("/^(http\:\/\/|ftp\:\/\/|\/\/|https:\/\/|php:\/\/|\/\/)/i", $var_value))

die("URL in POST - ".$var_name." = ". $var_value);

$security_string = "/UNION|OUTFILE|SELECT|ALTER|INSERT|DROP|".$prefix."_admins|".$prefix."_users|ModAdmin|SaveAdmin|EditAdmin|DelAdmin/i";

$security_decode = base64_decode($var_value);

if (preg_match($security_string, $security_decode))

die("Hack base64 in POST - ".$var_name." = ". $var_value."");

if (preg_match($security_string, $var_value))

die("Hack in POST - ".$var_name." = ". $var_value."");

$security_slash = preg_replace("/\/\*.*?\*\//", "", $var_value);

if (preg_match($security_string, $security_slash))

die("Hack in POST - ".$var_name." = ". $var_value."");

}

}



foreach ($_COOKIE as $var_name=>$var_value) {

if (preg_match("/<.*?(script|body|object|iframe|applet|meta|style|form|img|onmouseover).*?>/i",

$var_value)) die("Hack in COOKIE - ".$var_name." = ". $var_value."");

if (preg_match("/^(http\:\/\/|ftp\:\/\/|\/\/|https:\/\/|php:\/\/|\/\/)/i", $var_value))

die("Hack in COOKIE - ".$var_name." = ". $var_value);

$security_string = "/UNION|OUTFILE|SELECT|ALTER|INSERT|DROP|FROM|WHERE|UPDATE|".$prefix."_admins|"

.$prefix."_users|ModAdmin|SaveAdmin|EditAdmin|DelAdmin/i";

$security_decode = base64_decode($var_value);

if (preg_match($security_string, $security_decode)) die("Hack base64 in COOKIE - ".$var_name." = ". $var_value."");

if (preg_match($security_string, $var_value)) die("Hack in COOKIE - ".$var_name." = ". $var_value."");

$security_slash = preg_replace("/\/\*.*?\*\//", "", $var_value);

if (preg_match($security_string, $security_slash)) die("Hack in COOKIE - ".$var_name." = ". $var_value."");

}



reset($_GET);

reset($_POST);

reset($_COOKIE);

//если кому потребуется можне репроты отослать т.е различные записи, отправка данных об адресах,

имен, кто ломитсья....

7 теперь убирем запрос отвечающий за главную страницу.

открваем admin/modules/modules.php, находим строки:

находим:

echo "<br>";

OpenTable();

echo "<br><center><font class=\"option\">" . _MODULESADDONS . "</font><br><br>"

."<font class=\"content\">" . _MODULESACTIVATION . "</font><br><br>"

."" . _MODULEHOMENOTE . "<br><br>" . _NOTINMENU . "<br><br>"

."<form action=\"".$admin_file.".php\" method=\"post\">"

."<table border=\"1\" align=\"center\" width=\"90%\"><tr><td align=\"center\" bgcolor=\"$bgcolor2\">"

."<b>"._TITLE."</b></td><td align=\"center\" bgcolor=\"$bgcolor2\">

<b>"._CUSTOMTITLE."</b></td><td align=\"center\" bgcolor=\"$bgcolor2\">

<b>"._STATUS."</b></td><td align=\"center\" bgcolor=\"$bgcolor2\">

<b>"._VIEW."</b></td><td align=\"center\" bgcolor=\"$bgcolor2\">

<b>"._GROUP."</b></td><td align=\"center\" bgcolor=\"$bgcolor2\">

<b>"._FUNCTIONS."</b></td></tr>";

$main_m = $db->sql_fetchrow($db->sql_query("SELECT main_module from " . $prefix . "_main"));

$main_module = $main_m['main_module'];

Меняем на:

echo "<br>";

OpenTable();

echo "<br><center><font class=\"option\">" . _MODULESADDONS . "</font><br><br>"

."<font class=\"content\">" . _MODULESACTIVATION . "</font><br><br>"

."" . _MODULEHOMENOTE . "<br><br>" . _NOTINMENU . "<br><br>"

."<form action=\"".$admin_file.".php\" method=\"post\">"

."<table border=\"1\" align=\"center\" width=\"90%\"><tr><td align=\"center\" bgcolor=\"$bgcolor2\">"

."<b>"._TITLE."</b></td><td align=\"center\" bgcolor=\"$bgcolor2\">

<b>"._CUSTOMTITLE."</b></td><td align=\"center\" bgcolor=\"$bgcolor2\">

<b>"._STATUS."</b></td><td align=\"center\" bgcolor=\"$bgcolor2\">

<b>"._VIEW."</b></td><td align=\"center\" bgcolor=\"$bgcolor2\">

<b>"._GROUP."</b></td><td align=\"center\" bgcolor=\"$bgcolor2\">

<b>"._FUNCTIONS."</b></td></tr>";

include('config/module_main.php');

находим:

function home_module($mid, $ok=0) {

global $prefix, $db, $admin_file;

$mid = intval($mid);

if ($ok == 0) {

include ("header.php");

GraphicAdmin();

title("" . _HOMECONFIG . "");

OpenTable();

$row = $db->sql_fetchrow($db->sql_query("SELECT title from " . $prefix . "_modules where mid='$mid'"));

$new_m = filter($row['title'], "nohtml");


удаляем запрос $row2 = $db->sql_fetchrow($db->sql_query("SELECT main_module from " . $prefix . "_main"));

за место него: include('config/module_main.php');

находим:$old_m = filter($row2['main_module'], "nohtml");

заменяем его на: $old_m = filter($main_module, "nohtml");

находим строки:

$row3 = $db->sql_fetchrow($db->sql_query("SELECT title from " . $prefix . "_modules where mid='$mid'"));

$title = filter($row3['title'], "nohtml", 1);

$active = 1;

$view = 0;

$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'");

Header("Location: ".$admin_file.".php?op=modules");
Их меняем на:

$row3 = $db->sql_fetchrow($db->sql_query("SELECT title from " . $prefix . "_modules where mid='$mid'"));

$title = filter($row3['title'], "nohtml", 1);

$active = 1;

$view = 0;

$content = "\$main_module = \"$title\";\n";

save_conf("config/module_main.php", $content);

$res2 = $db->sql_query("update " . $prefix . "_modules set active='$active', view='$view' where mid='$mid'");

Header("Location: ".$admin_file.".php?op=modules");

Находим:

function module_edit($mid) {

global $prefix, $db, $admin_file;

$main_m = $db->sql_fetchrow($db->sql_query("SELECT main_module from " . $prefix . "_main"));

$main_module = $main_m['main_module'];


Меняем:

function module_edit($mid) {

global $prefix, $db, $admin_file;

include('config/module_main.php');

Открываем файл index.php в корне директории, находим:
$modpath = '';

define('MODULE_FILE', true);

$_SERVER['PHP_SELF'] = "modules.php";

$row = $db->sql_fetchrow($db->sql_query("SELECT main_module from ".$prefix."_main"));

$name = $row['main_module'];

define('HOME_FILE', true);
Заменяем на:

$modpath = '';

define('MODULE_FILE', true);

$_SERVER['PHP_SELF'] = "modules.php";

//$row = $db->sql_fetchrow($db->sql_query("SELECT main_module from ".$prefix."_main"));

include('config/module_main.php');

$name = $main_module;

define('HOME_FILE', true);

теперь в каталоге config создаем файл: module_main.php, при обнавлении страницы будет ошибка,

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

8. Нужно поработить главное зло системы это вездесуший блок модули.

открываем файл blocks/block-modules.php и меняем его содержимое на это:

<?php

if(!defined('NUKE_FILE')) die('Block wrong call: '.$_SERVER['PHP_SELF']);

global $prefix, $db, $admin, $sape, $sapelink4;

include('config/module_main.php');

$ThemeSel = get_theme();

if (file_exists("themes/$ThemeSel/module.php")) {

include("themes/$ThemeSel/module.php");

if (is_active("$default_module") AND file_exists("modules/$default_module/index.php")) {

$def_module = $default_module;

} else {

$def_module = "";

}

}

if (is_admin($admin)) {

$result2 = $db->sql_query("SELECT title FROM " . $prefix . "_modules");

while ($row2 = $db->sql_fetchrow($result2)) {

$title = stripslashes($row2['title']);

$a = 0;

$handle=opendir('modules');

while ($file = readdir($handle)) {

if ($file == $title) {

$a = 1;

}

}

closedir($handle);

if ($a == 0) {

$db->sql_query("DELETE FROM ".$prefix."_modules WHERE title='$title'");

}

}

}

$content .= "<br/><a href=\"/\"><b>"._HOME."</b></a><br/>";

$result3 = $db->sql_query("SELECT title, custom_title, view FROM " . $prefix . "_modules

WHERE active='1' AND title!='$def_module' AND inmenu='1' ORDER BY custom_title ASC");

while ($row3 = $db->sql_fetchrow($result3)) {

$m_title = stripslashes($row3['title']);

$custom_title = $row3['custom_title'];

$view = intval($row3['view']);

$m_title2 = ereg_replace("_", " ", $m_title);

if ($custom_title != "") {

$m_title2 = $custom_title;

}

if ($m_title != $main_module) {

if ((is_admin($admin) AND $view == 2) OR $view != 2) {

$content .= "<a href=\"modules.php?name=$m_title\" title=\"".$m_title2." \"><b>$m_title2</b></a><br/>";

}

}

}

$content .= "";

if (is_admin($admin)) {

$handle=opendir('modules');

while ($file = readdir($handle)) {

if ( (!ereg("[.]",$file)) ) {

$modlist .= "$file ";

}

}

closedir($handle);

$modlist = explode(" ", $modlist);

sort($modlist);

unset($temp);

$srow4="select title, mid from ".$prefix."_modules";

$res4=$db->sql_query($srow4);

unset($row44);unset($row4);

$row44=array();

while( $row4=$db->sql_fetchrow($res4)) {

$row44[]=$row4[0];

}



$row444=array();

$row444=array_diff($modlist,$row44);

if(!empty($row444))

foreach ($row444 as $k=>$v) {

$mod_uname=str_replace("_"," ",$v);

$db->sql_query("INSERT INTO ".$prefix."_modules VALUES (NULL, '$v', '$mod_uname', '0', '0', '1', '0','')");

}

$content .= "<br><center><b>"._INVISIBLEMODULES."</b><br>";

$content .= "<font class=\"tiny\">"._ACTIVEBUTNOTSEE."</font></center><br>";

$result5 = $db->sql_query("SELECT title, custom_title FROM ".$prefix."_modules

WHERE active='1' AND inmenu='0' ORDER BY title ASC");

while ($row5 = $db->sql_fetchrow($result5)) {

$mn_title = stripslashes($row5['title']);

$custom_title = $row5['custom_title'];

$mn_title2 = ereg_replace("_", " ", $mn_title);

if ($custom_title != "") {

$mn_title2 = $custom_title;

}

if ($mn_title2 != "") {

$content .= "<strong><big>&middot;</big></strong>&nbsp;<a href=\"modules.php?name=$mn_title\">$mn_title2</a><br>\n";

$dummy = 1;

} else {

$a = 1;

}

}

if ($a == 1 AND $dummy != 1) {

$content .= "<strong><big>&middot;</big></strong>&nbsp;<i>"._NONE."</i><br>\n";

}

$content .= "<br><center><b>"._NOACTIVEMODULES."</b><br>";

$content .= "<font class=\"tiny\">"._FORADMINTESTS."</font></center><br>";

$result6 = $db->sql_query("SELECT title, custom_title FROM ".$prefix."_modules



WHERE active='0' ORDER BY title ASC");

while ($row6 = $db->sql_fetchrow($result6)) {

$mn_title = stripslashes($row6['title']);

$custom_title = $row6['custom_title'];

$mn_title2 = ereg_replace("_", " ", $mn_title);

if ($custom_title != "") {

$mn_title2 = $custom_title;

}

if ($mn_title2 != "") {

$content .= "<strong><big>&middot;</big></strong>&nbsp;<a href=\"modules.php?name=$mn_title\">$mn_title2</a><br>\n";

$dummy = 1;

} else {

$a = 1;

}

}

if ($a == 1 AND $dummy != 1) {

$content .= "<strong><big>&middot;</big></strong>&nbsp;<i>"._NONE."</i><br>\n";

}

}

ob_start();

$content .= ob_get_contents();

ob_end_clean();

?>

Промежуточные результаты в режиме гостя имее 51 запрос на главной странице и

время генерации страницы уменьшенное в 5 раз, при стандартных новстях,

голосовании, и + еще какие-то 3 блока. Теперь делаем супер магический ход, отключаем

блок с голосованием, и что мы видим? О чудо! при госте у нас оказывеися 24 запроса! =)



Итак продолжим, теперь перейдем к пользователям:

находим в файле mainfile.php:

function is_admin($admin) {

global $prefix, $db;

if(!is_array($admin)) {

$admin = base64_decode($admin);

$admin = addslashes($admin);

$admin = explode(":", $admin);

$aid = addslashes($admin[0]);

$pwd = "$admin[1]";

} else {

$aid = addslashes($admin[0]);

$pwd = "$admin[1]";

}

if ($aid != "" AND $pwd != "") {

$aid = substr("$aid", 0,25);

$result = $db->sql_query("SELECT pwd FROM ".$prefix."_authors WHERE aid='$aid'");

$row = $db->sql_fetchrow($result);

$pass = $row['pwd'];

if($pass == $pwd && $pass != "") {

return 1;

}

}

return 0;

}

function is_user($user) {

global $prefix, $db, $user_prefix;

if(!is_array($user)) {

$user = base64_decode($user);

$user = addslashes($user);

$user = explode(":", $user);

$uid = "$user[0]";

$pwd = "$user[2]";

} else {

$uid = "$user[0]";

$pwd = "$user[2]";

}

$uid = addslashes($uid);

$uid = intval($uid);

if ($uid != "" AND $pwd != "") {

$result = $db->sql_query("SELECT user_password FROM ".$user_prefix."_users WHERE user_id='$uid'");

$row = $db->sql_fetchrow($result);

$pass = $row['user_password'];

if($pass == $pwd && $pass != "") {

return 1;

}

}

return 0;

}

function is_group($user, $name) {

global $prefix, $db, $user_prefix;

if(!is_array($user)) {

$user = base64_decode($user);

$user = addslashes($user);

$user = explode(":", $user);

$uid = "$user[0]";

$pwd = "$user[2]";

} else {

$uid = "$user[0]";

$uid = intval($uid);

$pwd = "$user[2]";

}

if ($uid != "" AND $pwd != "") {

$result = $db->sql_query("SELECT user_password FROM ".$user_prefix."_users WHERE user_id='$uid'");

$row = $db->sql_fetchrow($result);

$pass = $row['user_password'];

if($pass == $pwd && $pass != "") {

$result2 = $db->sql_query("SELECT points FROM ".$user_prefix."_users WHERE user_id='$uid'");

$row2 = $db->sql_fetchrow($result2);

$points = intval($row2['points']);

$result3 = $db->sql_query("SELECT mod_group FROM ".$prefix."_modules WHERE title='$name'");

$row3 = $db->sql_fetchrow($result3);

$mod_group = $row3['mod_group'];

$result4 = $db->sql_query("SELECT points FROM ".$prefix."_groups WHERE id='$mod_group'");

$row4 = $db->sql_fetchrow($result4);

$grp = intval($row4['points']);

if (($points >= 0 AND $points >= $grp) OR $mod_group == 0) {

return 1;

}

}

}

return 0;

}

Все счастие заменяем на:

function is_admin($admin) {

global $prefix, $db;

if(defined("ADMIN_SET")) return true;

elseif(defined("NOT_ADMIN_SET")) return false;

else{

if(!is_array($admin)) {

$admin = base64_decode($admin);

$admin = addslashes($admin);

$admin = explode(":", $admin);

$aid = addslashes($admin[0]);

$pwd = "$admin[1]";

} else {

$aid = addslashes($admin[0]);

$pwd = "$admin[1]";

}

if ($aid != "" AND $pwd != "") {

$aid = substr("$aid", 0,25);

$result = $db->sql_query("SELECT pwd FROM ".$prefix."_authors WHERE aid='$aid'");

$row = $db->sql_fetchrow($result);

$pass = $row['pwd'];

if($pass == $pwd && $pass != "") {

define("ADMIN_SET", true);

return true;

}

}

define("NOT_ADMIN_SET", true);

return false;

}

}



if(!defined("USER_SET") and !defined("NOT_USER_SET") and $user){

if(!is_array($user)) {

$user_main = base64_decode($user);

$user_main = addslashes($user_main);

$user_main = explode(":", $user_main);

$uid_main = "$user_main[0]";

$pwd_main = "$user_main[2]";

} else {

$uid_main = "$user[0]";

$pwd_main = "$user[2]";

}

$uid_main = addslashes($uid_main);

$uid_main = intval($uid_main);

if ($uid_main != "" AND $pwd_main != "") {

$result_main = $db->sql_query("SELECT * FROM ".$user_prefix."_users WHERE user_id='$uid_main' LIMIT 1");

$userinfo = $db->sql_fetchrow($result_main);

$pass_main = $userinfo['user_password'];

if($pass_main == $pwd_main && $pass_main != "") {

define("USER_SET", true);

}else{

define("NOT_USER_SET", true);

}

}else{

define("NOT_USER_SET", true);

}

}elseif(!defined("USER_SET") and !defined("NOT_USER_SET") and !$user){

define("NOT_USER_SET", true);

}

function is_user($user) {

if(defined("USER_SET")) return true;

if(defined("NOT_USER_SET")) return false;

}

function is_group($user, $name) {

global $prefix, $db, $userinfo, $group_use;

if (is_user($user) and $group_use==1) {

$result = $db->sql_query("SELECT m.mod_group, g.points FROM ".$prefix."_modules AS m LEFT JOIN ".$prefix."_groups AS g ON(g.id=m.mod_group) WHERE m.title='".addslashes($name)."' LIMIT 1");

$group_info = $db->sql_fetchrow($result);

$points = intval($userinfo['points']);

$mod_group = intval($group_info['mod_group']);

$grp = intval($group_info['points']);

if (($points >= 0 AND $points >= $grp) OR $mod_group == 0) {

return 1;

}

}elseif($group_use==0) return 1;

return 0;

}
Получили довольно быстрый способ получения информации является ся ли пользователь пользователем =)

теперь собственно блок пользователя, находим:

function userblock() {

global $user, $cookie, $db, $user_prefix;

if((is_user($user)) AND ($cookie[8])) {

$sql = "SELECT ublock FROM ".$user_prefix."_users WHERE user_id='$cookie[0]'";

$result = $db->sql_query($sql);

$row = $db->sql_fetchrow($result);

$title = ""._MENUFOR." $cookie[1]";

themesidebox($title, $row[ublock]);

}

}

И меняем это за счет полученной переменно в $userinfo

function userblock() {

global $user, $userinfo;

if(is_user($user) and $userinfo['ublockon']==1) {

$title = ""._MENUFOR." ".$userinfo['username'];

themesidebox($title, $userinfo['ublock']);

}

}
Немного поменяем систему работы с банерамы, а то надоело что поисковики говорят,

что баннер отстой, да и сделаю прямые ссылки =) людям не плохи и мне не плохо, зато

подстчет работает без ущерба....



Находим:
function ads($position)

и меняем всю на :

function ads($position) {

global $prefix, $db, $admin, $sitename, $adminmail, $nukeurl, $adsinfo;

$position = intval($position);

if(!is_array($adsinfo) or !$adsinfo){

$adsinfo = array();

$rows = $db->sql_query("SELECT * FROM ".$prefix."_banner WHERE active='1' ORDER BY position");

while($ads_result = $db->sql_fetchrow($rows)){

$adsinfo[$ads_result['position']][$ads_result['bid']] = $ads_result;

}

}

if(!empty($adsinfo[$position])){

$bid = array_rand($adsinfo[$position]);

$now_ads = $adsinfo[$position][$bid];

if(!is_admin($admin)) $db->sql_query("UPDATE ".$prefix."_banner SET impmade=impmade+1 WHERE bid='$bid'");

$imageurl = filter($now_ads['imageurl'], nohtml);

$clickurl = filter($now_ads['clickurl'], nohtml);

$alttext = filter($now_ads['alttext'], nohtml);

$cid = $now_ads['cid'];

$imptotal = intval($now_ads['imptotal']);

$impmade = intval($now_ads['impmade']);

$clicks = intval($now_ads['clicks']);

$date = $now_ads['date'];

$ad_class = filter($now_ads['ad_class'], nohtml);

$ad_code = $now_ads['ad_code'];

$ad_width = intval($now_ads['ad_width']);

$ad_height = intval($now_ads['ad_height']);

/* Check if this impression is the last one and print the banner */

if (($imptotal <= $impmade) AND ($imptotal != 0)) {

$db->sql_query("UPDATE ".$prefix."_banner SET active='0' WHERE bid='$bid'");

$result = $db->sql_query("SELECT name, contact, email FROM ".$prefix."_banner_clients WHERE cid='$cid'");

$row = $db->sql_fetchrow($result);

$c_name = filter($row['name'], nohtml);

$c_contact = filter($row['contact'], nohtml);

$c_email = filter($row['email'], nohtml);

if (!empty($c_email)) {

$from = "$sitename <$adminmail>";

$to = "$c_contact <$c_email>";

$message = _HELLO." $c_contact:\n\n";

$message .= _THISISAUTOMATED."\n\n";

$message .= _THERESULTS."\n\n";

$message .= _TOTALIMPRESSIONS." $imptotal\n";

$message .= _CLICKSRECEIVED." $clicks\n";

$message .= _IMAGEURL." $imageurl\n";

$message .= _CLICKURL." $clickurl\n";

$message .= _ALTERNATETEXT." $alttext\n\n";

$message .= _HOPEYOULIKED."\n\n";

$message .= _THANKSUPPORT."\n\n";

$message .= "- $sitename "._TEAM."\n";

$message .= "$nukeurl";

$subject = "$sitename: "._BANNERSFINNISHED."";

mail($to, $subject, $message, "From: $from\nX-Mailer: PHP/" . phpversion());

}

}

if ($ad_class == "code") {

$ad_code = stripslashes(FixQuotes($ad_code));

$ads = "<center>$ad_code</center>";

} elseif ($ad_class == "flash") {

$ads = "<center>

<OBJECT classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"

codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0\"

WIDTH=\"$ad_width\" HEIGHT=\"$ad_height\" id=\"$bid\">

<PARAM NAME=movie VALUE=\"$imageurl\">

<PARAM NAME=quality VALUE=high>

<EMBED src=\"$imageurl\" quality=high WIDTH=\"$ad_width\" HEIGHT=\"$ad_height\"

NAME=\"$bid\" ALIGN=\"\" TYPE=\"application/x-shockwave-flash\"

PLUGINSPAGE=\"http://www.macromedia.com/go/getflashplayer\">

</EMBED>

</OBJECT>

</center>";

} else {

$ads = "<center><a href=\"".$clickurl."\" onClick=\"this.href='index.php?op=ad_click&amp;bid=".$bid."'\" target=\"_blank\"><img src=\"".$imageurl."\" border=\"0\" title=\"".$alttext."\"/></a></center>";

}

} else {

$ads = "";

}

return $ads;

}

Так прикольно, сразу вылезло что кто сидит на таг. через php-nuke является рефералом

твердого Михаила =)


9.теперь разбиремся c модулем узер инфо! ура! дошел всетака, уже 2 часа пишу эту хрень

немножко подустал, ну ладно, двигаемся...

в mainfile.php После закрывающей скобки function online() {}



добавляем функцию:

function online_robots($useragent) {

global $r_or;

$r_or=false;



# Выясняем принадлежность к поисковым роботам

$remap_agents = array (

'antabot' => 'antabot (private)',

'aport' => 'Aport',

'Ask Jeeves' => 'Ask Jeeves',

'Asterias' => 'Singingfish Spider',

'Baiduspider' => 'Baidu Spider',

'Feedfetcher-Google'=> 'Feedfetcher-Google',

'GameSpyHTTP' => 'GameSpy HTTP',

'GigaBlast' => 'GigaBlast',

'Gigabot' => 'Gigabot',

'Accoona' => 'Google.com',

'Googlebot-Image' => 'Googlebot-Image',

'Googlebot' => 'Googlebot',

'grub-client' => 'Grub',

'gsa-crawler' => 'Google Search Appliance',

'Slurp' => 'Inktomi Spider',

'slurp@inktomi' => 'Hot Bot',



'lycos' => 'Lycos.com',

'whatuseek' => 'What You Seek',

'ia_archiver' => 'Alexa',

'is_archiver' => 'Archive.org',

'archive_org' => 'Archive.org',



'YandexBlog' => 'YandexBlog',

'YandexSomething' => 'YandexSomething',

'Yandex' => 'Yandex',

'StackRambler' => 'Rambler',



'WebAlta Crawler' => 'WebAlta Crawler',

'igdeSpyder' => 'igdeSpyder',

'Yahoo' => 'Yahoo',

'zyborg@looksmart' => 'WiseNut',

'WebCrawler' => 'Fast',

'Openbot' => 'Openfind',

'TurtleScanner' => 'Turtle',

'libwww' => 'Punto',



'msnbot' => 'MSN',

'MnoGoSearch' => 'mnoGoSearch',

'booch' => 'booch_Bot',

'WebZIP' => 'WebZIP',

'GetSmart' => 'GetSmart',

'NaverBot' => 'NaverBot',

'Vampire' => 'Net_Vampire',

'ZipppBot' => 'ZipppBot',

'Begun' => 'Begun Robot Crawler',

'W3C_Validator' => 'W3C Validator',

'W3C_CSS_Validator' => 'W3C CSS Validator',

);



$remap_agents=array_change_key_case($remap_agents, CASE_LOWER);



$pmatch_agents="";

foreach ($remap_agents as $k => $v) {

$pmatch_agents.=$k."|";

}

$pmatch_agents=substr_replace($pmatch_agents, '', strlen($pmatch_agents)-1, 1);



if (preg_match( '/('.$pmatch_agents.')/i', $useragent, $match ))



if (count($match)) {

$r_or = @$remap_agents[strtolower($match[1])];

}



return $r_or;

}

и функцию:

function online_skip($text) {

$text=mysql_escape_string($text);

$text=stripslashes($text);

$text = str_replace("'",'`',$text);

$text = str_replace('"','`',$text);

return $text;

}




открываем blocks/block-User_Info.php

и его содержимое меняем на это:

<?php

if ( !defined('BLOCK_FILE') ) {

Header("Location: ../index.php");

die();

}

$bots ="";

$content = "";

global $user, $prefix, $user_prefix, $db, $anonymous, $locale, $location;

$month = date('M');

$curDate2 = "%".$month[0].$month[1].$month[2]."%".date('d')."%".date('Y')."%";

$ty = time() - 300;

$preday = strftime('%d', $ty);

$premonth = strftime('%B', $ty);

$preyear = strftime('%Y', $ty);

$curDateP = "%".$premonth[0].$premonth[1].$premonth[2]."%".$preday."%".$preyear."%";

$who_online_now = ""; $guest_online_now = "";

$online_sql = "SELECT * FROM ".$prefix."_session";

$online_query = $db->sql_query($online_sql); $i = 1;

while ($online_row = $db->sql_fetchrow($online_query)){

$current_robot = online_skip(online_robots($online_row[useragent]));

if ($current_robot!="") {

if (is_admin($admin)) { $rt=filter($online_row['location'], "");}

$bots .= "<font color=red>$current_robot</font> $rt <br>"; $f++;

} else {

if (isset($online_row[guest]) and $online_row[guest] == 0) {

if ($i < 10) { $a++;

$who_online_now .= "0" .$i." :&nbsp;<a href=\"modules.php?name=Your_Account&amp;op=userinfo&amp;username=$online_row[uname]\"><font color=\"#3572AD\">$online_row[uname]</font></a><br>\n";

} else {$a++;

$who_online_now .= $i.":&nbsp;<a href=\"modules.php?name=Your_Account&amp;op=userinfo&amp;username=$online_row[uname]\"><font color=\"#3572AD\">$online_row[uname]</font></a> $online_row[location]<br>\n";

}

$who_online_now .= ($i != $member_online_num ? " " : "");

$i++;

} else {$b++;

if (is_admin($admin)) { $guest_online_now .= " ".$online_row['location']."<br>\n";}

}

}

$hala="";

}

if ($f == 0) {$f=0;}

if ($a == 0) {$member_online_num = 0;} else {$member_online_num = $a;}

if ($b == 0) {$guest_online_num = 0;} else {$guest_online_num = $b;}

$who_online_num = $guest_online_num + $member_online_num + $f;

$who_online_num = intval($who_online_num);



$botes = $who_online_num-$guest_online_num-$member_online_num;

$content .= "<img src=\"images/blocks/group-3.gif\" height=\"16\" width=\"16\" alt='"._BVISIT."' /> <b><u>"._BVISIT.":</u></b>\n<br>\n";

$content .= "<img src=\"images/blocks/ur-anony.gif\" height=\"16\" width=\"16\" alt='"._BVIS."' /> "._BVIS.": <b>$guest_online_num</b><br>\n";

$content .= "<img src=\"images/blocks/ur-member.gif\" height=\"16\" width=\"16\" alt='Зарегистрированные пользователи'/> Зарегестрированных пользователей: <b>$member_online_num</b><br>\n";

$content .= "<img src=\"images/blocks/ur-registered.gif\" height=\"16\" width=\"16\" alt='"._BTT."'/> "._BTT.": <b>$who_online_num</b> из них роботов:<b>$botes</b> <br>\n $hala";

if (is_admin($admin)) {if ($bots !="") {

$content .= "<hr><img src=\"images/blocks/group-2.gif\" height=\"16\" width=\"16\" alt='Поисковые системы'/> <b><u>Боты на линии:</u></b><br>$bots";

}

}



if ($member_online_num > 0) {

$content .= "<hr>\n<img src=\"images/blocks/group-1.gif\" height=\"16\" width=\"16\" alt='"._BON."'/> <b><u>"._BON.":</u></b><br>$who_online_now";

}



?>

Реккомендую этот блок поставить за место родного кто на сайте, он делает один

запрос и обрабатывается быстрее чем родные блоки.



Вот теперь у нас гостевой предел запросов на главной = 19 и 0.1 секунда открытия

страницы, уже ощущается, что сайт преобразовался из тяжелого ольшого слабого

(относительно размера) мутанта в не что меньшее и быстрое.


Ну а теперь последние 3 дополнения и я наконец лягу спать....


10.так модифицируем admin.php, посмотрев дикие запросы в бд при адимнистрировании,

стало понятно что нормальный человек не будет каждый свой запрос обновлять модули

в системе, по этому поводу, находим:

$handle=opendir('modules');

$modlist = "";

while ($file = readdir($handle)) {

if ( (!ereg("[.]",$file)) ) {

$modlist .= "$file ";

}

}

closedir($handle);

$modlist = explode(" ", $modlist);

sort($modlist);

for ($i=0; $i < sizeof($modlist); $i++) {

if(!empty($modlist[$i])) {

$row = $db->sql_fetchrow($db->sql_query("SELECT mid from " . $prefix . "_modules where title='$modlist[$i]'"));

$mid = intval($row['mid']);

if (empty($mid)) {

$db->sql_query("insert into " . $prefix . "_modules values (NULL, '$modlist[$i]', '$modlist[$i]', '0', '0', '1', '0', '')");

}

}

}


и это комменитруем, далее заходим в папку admin/modules, созаем в ней файл modup.php,

в него вставляем:

<?php



if (!defined('ADMIN_FILE')) {

die ("Access Denied");

}



global $prefix, $db, $admin_file;

$aid = substr("$aid", 0,25);

$row = $db->sql_fetchrow($db->sql_query("SELECT radminsuper FROM " . $prefix . "_authors WHERE aid='$aid'"));

if ($row['radminsuper'] == 1) {



function main_mod() {

global $db, $bgcolor2, $admin_file, $prefix;

include ("header.php");

GraphicAdmin();

OpenTable();

echo "<center><font class=\"title\"><b>Обновление модулей</b></font></center>";

CloseTable();

echo "<br>";



$handle=opendir('./modules');

$modlist = "";

while ($file = readdir($handle)) {

if ( (!ereg("[.]",$file)) ) {

$modlist .= "$file ";

}

}

closedir($handle);

$modlist = explode(" ", $modlist);

sort($modlist);

for ($i=0; $i < sizeof($modlist); $i++) {

if(!empty($modlist[$i])) {

$row = $db->sql_fetchrow($db->sql_query("SELECT mid from " . $prefix . "_modules where title='$modlist[$i]'"));

$mid = intval($row['mid']);

if (empty($mid)) {

$db->sql_query("INSERT INTO modules values (NULL, '$modlist[$i]', '$modlist[$i]', '0', '0', '1', '0', '')");

}

}

}

include("footer.php");

}



switch($op) {



case "modup":

main_mod();

break;



}



} else {

echo "Access Denied";

}



?>

потом заходим в папку admin/links тут создаем файл links.modup.php

в него помещаем:

<?php

if (!defined('ADMIN_FILE')) {

die ("Access Denied");

}



global $admin_file;

if ($radminsuper==1) {

adminmenu("".$admin_file.".php?op=modup", "Обновление модулей", "preferences.gif");

}



?>

и наконец admin/case создаем файл case.modup.php

и в него вставляем:

<?php

if (!defined('ADMIN_FILE')) {

die ("Access Denied");

}



switch($op) {

case "modup":

include("admin/modules/modup.php");

break;



}

?>
все имеем у админа на тойже главной странице 34 запроса =) поздравляю управленческий

тюнинг почти закончен.



11. открываем includes/ipban.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();

}

}

Меняем это на:

$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();

}

в этом же файле находим:

$ip = $_SERVER['REMOTE_ADDR'];

$past = time()-2;

$sql = "DELETE FROM ".$prefix."_antiflood WHERE time < '$past'";

$db->sql_query($sql);

$ctime = time();

$db->sql_query("INSERT INTO ".$prefix."_antiflood (ip_addr, time) VALUES ('$ip', '$ctime')");

$numrow = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_antiflood WHERE ip_addr='$ip'"));

if ($numrow >= 3) {

echo "<br><br><center><b>Sorry, too many page loads in so little time!</b></center>";

die();

}

unset($ip);


и заменяем на:

if ($antiflood_pages>0) {

$ip = $_SERVER['REMOTE_ADDR'];

$past = time()-2;

$sql = "DELETE FROM ".$prefix."_antiflood WHERE time < '$past'";

$db->sql_query($sql);

$ctime = time();

$db->sql_query("INSERT INTO ".$prefix."_antiflood (ip_addr, time) VALUES ('$ip', '$ctime')");

$numrow = $db->sql_numrows($db->sql_query("SELECT * FROM ".$prefix."_antiflood WHERE ip_addr='$ip'"));

if ($numrow >= $antiflood_pages) {

echo "<br><br><center><b>Извините, но Вы открываете слишком много страниц за малый промежуток времени!</b></center>";

die();

}

unset($ip);

}

так теперь у гостя 18 запросов. если отключить антифлуд, который меня лично бесит,

то будет 15 запросов, у админа гд-то 34-36

сижу и думаю,сайт меняться каждый раз ведь не может, т.е каждый запрос, не добавляется нового модуля

ну новости какие разместят, одного часа хватит ведь =) ... короче в кеш его! Но!

Сначало его зажмем.

открываем mainfile.php и туда перед функцией function makePass вставляем:


function CheckCanGzip(){

if (headers_sent() || connection_aborted()){

return 0;

}

if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false) return "x-gzip";

if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) return "gzip";

return 0;

}



/* $level = compression level 0-9, 0=none, 9=max */

function GzipOut($debug=0, $level=1){

global $config, $Timer, $db, $tpl, $Size, $Crc, $s;

header ("Last-Modified: " . date('r', time()-60*60*10) ." GMT");

$ENCODING = CheckCanGzip();

if ($ENCODING){

$Contents = ob_get_contents();

ob_end_clean();

if ($debug){

$s = "<!--Несжатая: ".strlen($Contents)."; ";

$s .= "Сжатая: ".

strlen(gzcompress($Contents, $level)).

"-->";

$Contents .= $s;

}

header("Content-Encoding: $ENCODING");

print "\x1f\x8b\x08\x00\x00\x00\x00\x00";

$Size = strlen($Contents);

$Crc = crc32($Contents);

$Contents = gzcompress($Contents, $level);

$Contents = substr($Contents, 0, strlen($Contents) - 4);

print $Contents;

print pack('V', $Crc);

print pack('V', $Size);

exit;

}else{

ob_end_flush();

if ($debug){

echo "<!--Страница не была сжата-->";

}

exit;

}



}


находим в mainfil.php строики:



if ($phpver >= '4.0.4pl1' && isset($_SERVER['HTTP_USER_AGENT']) && strstr($_SERVER['HTTP_USER_AGENT'],'compatible')) {

if (extension_loaded('zlib')) {

@ob_end_clean();

ob_start('ob_gzhandler');

}

} elseif ($phpver > '4.0' && isset($_SERVER['HTTP_ACCEPT_ENCODING']) && !empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {

if (strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {

if (extension_loaded('zlib')) {

$do_gzip_compress = true;

ob_start(array('ob_gzhandler',5));

ob_implicit_flush(0);

if (ereg("MSIE", $_SERVER['HTTP_USER_AGENT'])) {

header('Content-Encoding: gzip');

}

}

}

}

и удаляем их чтоб не мешали работать.

Открываем файл header.php и туда добавляем:

после define('NUKE_HEADER', true);

данные буковки:

ob_start();

ob_implicit_flush(0);

Открываем footer.php находим строки:

echo "</body>\n</html>";

ob_end_flush();

die();

}



foot();

и меняем их на:

echo "</body>\n</html>";

}



foot();

GzipOut(true,"5");

die();
Ну вот собственно получили довольно приличный нук, похожий чем-то на smallNuke,

так теперь прикиним теоретически, что если к сайту будут ходить человек эдак 30-40 в сутки,

это же мало =) и соответственно он будет работать нормально и относительно быстро,

теперь если вы развились, понавешали кучу блоков и всякой интересной и уникальной

информации, нужно будет думать чтот с этим делать, это надо кешировать.

мда полазив по сайту понял что меня конкретно бесит антифлуд...

Вот, финальные размышления, если заменить модуль NEWS на какой-нибудь менее запросливый,

и поставить модуль ajax голосования, то можно впринципе еще уменьшить запросы т.к основная нагрузка идет именно от него,

не оптимизировано практически ничего и скорее всего сам автор этого делать не будет,

поэтому система PHP-Nuke так и останется отличным материалом для изучения для тех,

кто не особо разбирается в PHP, потому-что с нее многие начали и взяли кучу элементов,

например Slaed, Post Nuke, smallNuke..... это конечно не полный список, но эту систему можно отлично

манетизоровать(естественно уже оптимизированную, а то многие просто могут отказаться оказываеть услуги хостинга,

хотя в наше время эта CMS не является такой мега нагружающей систему как многие пишут

да и компьютеры уже давно не пентиумы 166ММХ)

если надо че написать пишите поможем чем сможем....

Во нашел кусочки от наворотов http://mynuke.ru
великий человек много написал, там кстате есть оптимизация модуля новостей....
Самописные содули еще есть тут и вот тут так что ищите.....

забыл совсем, что не выложил собраный архив с данными модификациями...

Тык Тык UpToLike