Кой-какие послезные скрипты

Опубликовано admin 24.05.2009

Вот когда удаляешь гланды - удобно делать это через рот. Но иногда пыциент рот открывать не хочет и приходится тянуться к ним через жопу… Это я к тому, что некоторые ребята настойчиво не хотят давать доступ к админке хостинга (хотя неужели непонятно, что мне откровенно пофиг, что там еще висит - масштаб не мой, а при противоправных действиях логи все сохранят и можно идти в “агентство К”), поэтому если у тебя что-то криво встало тебе ни БД не почистить из phpmyadmin, ни файлы нормально протереть из админки (если по фтп, то оно начинает слать команды на удаление каждого файла, а это долго). Вот и приходится извращаться…

Скрипт, сносящий все таблицы в базе данных:

$link = mysql_connect(”host”, “username”, “pass”)
or die(”Could not connect : ” . mysql_error());
print “Connected successfully”;
mysql_select_db(”dbname”) or die(”no database”);

$result =mysql_list_tables(”dbname”);
while ($row = mysql_fetch_row($result)) $tab[]=$row[0];
for($i=0;$i<sizeof($tab);$i++) //сносим нах
{
$query = ‘DROP TABLE `’.$tab[$i].’`';
$result = mysql_query($query) or die(”Query failed : ” . mysql_error());
}
$result =mysql_list_tables(”dbname”); //проверяем не осталось ли чего
while ($row = mysql_fetch_row($result)) echo ‘<br>’.$row[0];
//если кроме Connected successfully ничего не напишет, то все начит снесли

Скрипт для сноса каталогов (бастрее чем по ftp трахаться):

$deldir = “papka”;
rmdirr($deldir);

function rmdirr($dirname)
{
if (!file_exists($dirname)) {
return false;
}
if (is_file($dirname)) {
return unlink($dirname);
}
$dir = dir($dirname);
while (false !== $entry = $dir->read()) {
if ($entry == ‘.’ || $entry == ‘..’) {
continue;
}
rmdirr(”$dirname/$entry”);
}
$dir->close();
return rmdir($dirname);
}

Скрипт для семны прав доступа на фалы и папки созданные не вашим юзером (если не дает редактировать):

function chmod_R($path, $perm) {

$handle = opendir($path);
while ( false !== ($file = readdir($handle)) ) {
if ( ($file !== “.”) && ($file !== “..”) ) {
if ( is_file($file) ) {
chmod($path . “/” . $file, $perm);
}
else {
chmod($path . “/” . $file, $perm);
chmod_R($path . “/” . $file, $perm);
}
}
}
closedir($handle);

}

$path = $_SERVER["QUERY_STRING"];

if ( $path{0} != “/” ) {
$path = $_SERVER["DOCUMENT_ROOT"] . “/” . $path;
}

chmod_R($path, 0777);
chmod($path, 0777);
echo $path;
//обращаемся к нему так: chmod.php?path_to_problem_dir

О секретности и специалистах

Опубликовано admin 24.04.2009

Подкинул только что Burnis в аську вот такую вот ссылочку и появились двоякие чувства :)

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

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

Еще  пару лет назад когда только год первый программистом отработал была идейка одна, которую Бурнис только что случайно дооформил. Суть была такая: накопилось у меня несколько сделанных проектов и вдруг стало ясно, что большая часть всего последующего строится на их базе, то бишь сходил, выдрал куски, подправил чуток и готово, чем я и стал радостно заниматься. В принципе я имел доступ вообще ко всему, что делала контора, посему труда не составляло зайти на нужный сайт и скопировать то, что надо. Но вот сейчас доступа нету и можно считать, что 50% нароботок я просрал, а оставшиеся 50% у меня сидят в голове и я по памяти это все пишу, но помню большие куски я только в общих чертах, поэтому трудно назвать то, что на выходе получается хорошо оптимизированным.

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

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

С какой-то там n-й стороны битрикс уже не первую версию, как встроил “компоненты”, призванные решить подобную проблему. Фишка там в том, что 1 раз пишешь что-то мегауниверсальное, с множеством настроек и шаблончиком, а потом из проекта в проект перетаскиваешь. Для новостей, скажем, это удобно, но, например, если я пишу каталог нестандартный, нафига мне этот вызов, в котором надо массив с 20-ю ключами отправлять и универсальность, если это все будет только на одной странице одного сайта вызываться? Имхо, удобнее было бы просто на куски полезные это все порезать…

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

Как сохранить? В тот момент, когда я работал в конторе, были мысли сделать chm-ку, однако было лень, плюс править на лету ее было бы неудобно. Но сейчас вот придумалось (Бурнисом ) ): почему бы закрытую википедию не сделать для самого себя, точнее наверно даже не ее, а скорее эту chm-ку в виде сайтика, с возможностью быстро что-то подправить и, наверно, тегами.

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

Подзаебал немножко фриланс

Опубликовано admin 12.04.2009

Вроде и ничего, вроде и предложения за 3 недели можно собрать такие, что суммарно будет нормальная месячная заработная плата, но подзаебали эти доморощеные “агентства”. А знаете почему?

Во первых - они все поголовно обещают взять тебя в штат и рассказывают басни о корпоративном духе. Лично мне от этого смешно и тошно, потому что в “штат” я ни к кому не собираюсь и ихний дух мне с высокой колокольни :) Однообразно и неоригинально

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

Посему я теперь сам себе интернет-агентство “Vzzz”. Мудрый человек даже сказал:

seaman (14:20:47 1/04/2009)
давно пора, а то дрочишь сидишь..

Правда с поиском клиентуры пока что нихрена не ясно. Знаю где, но незнаю как. Там где людей это бы заинтересовало - почти у половины нету мыл, а есть только трубки. Смс-ки, как выяснилось бесплатно с одного ip можно только штук 5 за день отправить через сайт оператора. Размышляю над заказом расслки смс, так как по ценам вроде вылетает в рубль за смску (в среднем), а номеров штук 300 набрал.

По родному городу - тоже набрал номеров, но надо обзванивать+спамить по факсам :)

А еще у нас есть партнеры в Перми: http://za-belyash.ru/

Ну че? я пока жив

Опубликовано admin 23.03.2009

И даже никуда не уходил :) Откровенно говоря в определенный момент мне сильно все наскучило: и бесконечные понты на части блогов, и откровенная лажа в работе яндекса, и окружающая меня действительность (любовь злоебучая, блудняки). Последней каплей стал яндекс, который забанил белый сайт с уникальным самописным контентом, за то, что кто-то другой спиздил мой контент и поместил на более весомую площадку :) Поржал да и положил на все хуй ;) Потом как-то все тянулось на автопилоте, я - учился себе, ни о чем сильно не парился. Ну и под новый год случился тотальный бан почти всего, что быстренько и отразилось на доходах :) В январе была сессия, так что особо времени, на поднятие чего-то нового не было. Поголодал чуток, потом подвернулась халтурка с Битриксом (спасибо Вассеру, которому я все еще должен пиво и Роме, который, похоже, единственный заказчик, с которым ты работаешь с удовольствием), которой я быстренько и занялся :)

Читать полностью »

Внимане! Взломы

Опубликовано admin 11.04.2007

В про?лом посте писал про взломы сайтов на арбатеке и валуехосте. Беру свои слова обратно (хотя у арбатека на 20 сайтов нормальных бэкапов не на?лось опять!). Как выяснилось - похитили ftp подключения от сайтов.

Валуехост просветил:
В сети интернет появился новый тип вируса - Downloader.JS.Psyme.ct (возможны другия названия), распространяющий себя через веб-сайты. Схема заражения довольно проста: достаточно зайти на зараженный сайт и при стандартных настройках безопасности браузера, вирус автоматически установится на компьютере пользователя. После этого он начинает отслеживать логины и пароли от FTP, высылая их злоумы?ленникам. Собрав определенное количество паролей, запускается специальная программа, которая подключается по FTP к каждому сайту и встраивает в начало или конец страниц собственный html-код.

А еще валуехост выдал логи ftp-доступа (у арбатека тоже таковых не на?лось) и дествительно этот … заходил по фтп и менял файлы.

Вот его IP: 195.189.226.234

К сожалению с какого сайта заходил так и не выяснил (а там их аж 69) =)

Так что ребята. Просканируйте себя на вирусы, а то … тереть все руками.

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

Последние обновления Битрикс “Управление сайтом”

Опубликовано admin 20.03.2007

Это так с целью набивки контентом. Кому интересно - читаем =)

Структура сайта
5.9.0
- Реализованна поддержка визуального редактирования в форме редактирования ?аблона сайта.
- Реализованна возможность вставки Flash-ролика кнопкой “Вставить Flash” в стандартной панели инструментов.
- Добавлена функция вставки разрыва страницы для печати.
- Добавлена функция вставки тега разделителя страниц <BREAK /> (может использоваться для разбиения на страницы при выводе боль?ого текста).
- ?справлен механизм вывода окна ожидания при загрузке редактора.
- ?справлены о?ибки отображения параметров компонентов.
- ?справлен ряд интерфейсных о?ибок редактора.
- По умолчанию в редакторе активирован режим показа границ таблиц.
- При редактировании документа через документооборот реализованна возможность сохранения PHP кода.
- Для разработчиков: реализованно API добавления панелей инструментов и кнопок.

Поиск

5.9.0
- Значительно переработан вне?ний вид компонентов 2.0 bitrix:search.form и bitrix:search.page.
- В компонент bitrix:search.form добавлен ?аблон с кнопкой поиска, расположенной справа.
- ?справлен перевод сообщений модуля.

Главный модуль
5.9.0
- В форме редактирования ?аблона сайта появилась возможность визуального редактирования ?аблона (требуется обновление редактора до версии 5.9.0).
- В форме редактирования ?аблона сайта появилась новая закладка “Стили ?аблона” и возможность редактировать описания стилей на закладке “Стили сайта”.
- Улуч?ен интерфейс компонентов в режиме редактирования сайта:
- переработан диалог “Редактировать параметры компонента”;
- переработан диалог “Копировать ?аблон”;
- добавлена кнопка “Редактировать CSS-файл ?аблона”;
- добавлена кнопка “Очистить ке? компонента”.
- В компоненты добавлен автоматический режим ке?ирования. Управление ке?ированием компонентов и очистка ке?а вынесены на отдельную страницу “Управление ке?ем” в меню “Настройки продукта”.
- Новый компонент “Управляемая регистрация пользователя” (main.register).
- Новый компонент “Переключатель сайтов” (main.site.selector).
- Новый компонент “Включаемая область” (main.include).
- Новый компонент “Меню сайта” (menu).
- Новый компонент “Цепочка навигации” (breadcrumb).
- Новый системный компонент “Сообщение об о?ибке” (system.show_message). Компонент вызывается из функций ShowMessage/ShowError/ShowNote, что позволяет кастомизировать вне?ний вид выводимых сообщений.
- Обновлены компоненты карты сайта и профиля пользователя (main.map, main.profile).
- Обновлены системные компоненты авторизации и навигации (system.auth.*, system.pagenavigation).
- ?справлено некорректное поведение механизма распределения куков по доменам для некоторых браузеров.
- Разработчикам: в CMain добавлено семейство функций AddHeadString(), GetHeadStrings(), ShowHeadStrings() для добавления и вывода произвольных строк в ?аблоне сайта отложенными функциями.

?нформ. блоки
5.9.0
- Значительно переработан вне?ний вид и функциональность компонентов 2.0.
- В административной части фильтры списков сохраняются в сессии, а не в параметрах URL.
- Для значений множественных свойств всех типов добавлена кнопка "Добавить".
- В списке элементов при установленном модуле документооборота фильтр по статусам рас?ирен комбинациями статусов. Например "12" - выбрать элементы в статусе Опубликован/Черновик.
- Программистам: добавлена поддержка кастомных вкладок для формы редактирования элемента. Событие OnAdminIBlockElementEdit.
- Программистам: в методе CIBlockElement::GetProperty добавлена сортировка по BEPE.SORT (enum_sort).
- Программистам: в метод CIBlockElement::GetList в параметр arSelect добавлена обработка IBLOCK_NAME
- Программистам: фильтр по активным элементам метода CIBlockSection::GetList теперь учитывает не только дату, но и время.
- При импорте элементов добавлена дополнительная проверка прав.
- ?справлена о?ибка смены типов свойств при редактировании информационного блока.
- ?справлена о?ибка сохранения значений свойств по умолчанию.
- ?справлена о?ибка редактирования свойства “Привязка к пользователю” в общем списке элементов.

5.9.1
- Добавлены компоненты: iblock.element.add, iblock.element.add.form, iblock.element.add.list.

Статья про рас?ифровку капчи Битрикса

Опубликовано admin 06.03.2007

Забавно, всегда думал, что капча там серьезная, а она оказалась дырявой =(
В кратце: в имени генерируемой битриксом капчи содержится код, который позволяет ее рас?ифровать, точнее то, что отображается на капче содержится за?ифрованным в ее имени. Таблицы рас?ифровки приведены.

http://www.xakep.ru/post/31268/default.asp

PS: А нахеры все-таки не дураки ;)

Связанные инфоблоки

Опубликовано admin 06.10.2006

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

Есть в битриксе формат свойства “привязка к элементам”, в которой можно хранить id нужного элемента (или несколько), да еще при заполнении прикручен удобный поисковичек.

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

Про заголовки страниц в битриксе

Опубликовано admin 06.10.2006

Тут такое открытие случилось. Даже специальную категорию создал.

Оказывается в битриксе существуют отложенные функции.
?з хелпа:

Алгоритм работы данной технологии:
1. любой исходящий поток из PHP скрипта буферизируется
2. как только в коде встречается одна из следующих функций:

  • CMain::ShowTitle
  • CMain::ShowCSS
  • CMain::ShowNavChain
  • CMain::ShowProperty
  • CMain::ShowMeta
  • CMain::ShowPanel

либо другая функция обеспечивающая откладывание выполнения какой либо функции (отложенной), то:
2.1 весь буферизированный до этого контент запоминается в очередном элементе стэка A
2.2 в стэк A добавляется пустой элемент, который в дальней?ем будет заполнен результатом выполнения отложенной функции
2.3 имя отложенной функции запоминается в стэке B
2.4 буфер очищается и буферизация снова включается
Таким образом существует стэк A, в котором находится весь контент страницы разбитый на части. В этом же стэке есть пустые элементы предназначенные для их дальней?его заполнения результатами отложенных функций.
Также существует стэк B, в котором запоминаются имена и параметры отложенных функции в порядке их следования в коде.

3. в конце страницы в служебной части эпилога выполняются следующие действия:
все отложенные функции из стэка B начинают выполняться одна за другой
результаты их выполнения вставляются в специально предназначенные для этого места в стэк A
весь контент из стэка A “склеивается” (конкатенируется) и выводится на экран

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

Короче говоря, нужно было сделать чтобы тайтл браузера и тайтл просто выводились разными. Битрикс в админке предлагает такую возможность и прописывает некоторые параметря в страницу. Причем после этого стандартная функция showtitle начинает выводить доп заголовок, заданный через упомянутые вы?е дополнительные параметры, а на settitle ей становится насра.. пофигу.

Дак вот, оказывается чтобы на settile ей было не насра.. нужно делать так:
showtitle() - выведет дополнительный заголовок
showtitle(false) - выведет заголовок заданный в settitle

Все.


Copyright © 2007 Doorway blog. All rights reserved.