/var/log/life.log
Блог программиста из солнечной Бурятии

anti iframer

Достался мне похаканый сайтик на joomla, который был жестоко проифрэймлен. Симптомы такие, во всех папках до 3-го уровня вложенности, где есть один из файлов index.html, index.php, default.php добавлен .htaccess и втсавлены iframe в эти файлы. Пришлось писать “удалятор” этих пакостей. Т.к. это joomal то index.html используются лишь для того, чтобы запретить просмотр содержимого каталогов на сайте, то их я просто очищаю, а из остальных пришлось гадость вырезать: Читать полностью »

Динамическое удаление и добавление строк и столбцов в таблице

Когда начал писать скрипт для создания создания шаблонов для вышивки, я даже на знал как он будет выглядеть и что делать. Решив всё делать на JavaScript, начал искать как удалить строки из таблицы, и нашёл вполне вменяемый “мануал” http://sudoku.org.ua/rus/blog/2006/03/09/deltablerows1/ . Только там удалялись лишь строки и по id, для меня id были лишними т.к. удалял я строки снизу, и мне также нужно было не только удаление строк, но и удаление столбцов а так же их динамическое добавление. Вот что получилось: Читать полностью »

Гомер Симпсон на CSS

o
o
o
o
(
O
O
O
\
L
(
O
O
O
O
O
\
L
(
O
|
|
\
\
|
|
\
\
\
\
(
(
8
o
o
o
(
(
8
o
o
o
o
)
)
b
o
O
o
o
o
o
o
o
)
b
o
O
o
o
o
o
o
o
o
o
o
/
/
/
_
_
_
C
C
O
(

взято от сюда http://www.romancortes.com/blog/homer-css/, а тут анимация создания http://nedbatchelder.com/blog/200805/css_homer_animated.html
Кто не понял, это не картинка)

ох уж эта кроссбраузерность

Точнее даже не она, а подгонка разметки и стилей под IE6(т.к. им всё ещё пользуются), чтоб он тоже показывал так как этого хочется, ну или хотя бы приблизительно. Делаем, смотрим в опере – отлично, firefox – отлично, IE – бля…, и начинается подгонка. Вчера столкнулся с тем что IE не воспринимает :hover для всего кроме a, точнее я с этим столкнулся немного раньше, но решил что это мои корки, или IE, вобщем забил. Вчера я таки его победил, точнее не я, а Peter Nederlof и не вчера, а аж в 2005 году), это конечно костыли, но работает и хер с ним. Сегодня IE подсунул мне новую свинью. Всего то нужно было выровнять по центру табличку в div. Но было интересно то что как раз IE показал то что я ожидал увидеть, а опера и огнелис отказались ставить в центр табличку. А сделал я text-align:center для div. Выручил меня старый добрый center). И всё бы хорошо, но

The center element was deprecated in HTML 4.01.
The center element is not supported in XHTML 1.0 Strict DTD.

Так что было решено отказаться от такого подхода, начались поиски и оказалось, что text-align только для inline элементов коими не являются table и div(мне тут ещё и div запихать и отцентровать понадобилось), и в стандарте чёрным по белому написано:

Otherwise, if both ‘margin-left’ and ‘margin-right’ are ‘auto’, they will be set to equal values. This will center the element inside its parent.

что и было сделано. Opera и FireFox сделали всё как надо, а вот теперь настала очередь IE, он видимо этот стандарт видел впервые, и что бы заставить его повиноваться, пришлось в стиль div-родителя прописать text-align:center;
Чего интересного ждать от IE завтра?)

backup

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/acp/acp_database.' . $phpEx);
include($phpbb_root_path . 'includes/functions_install.' . $phpEx);

$time = time();
$filename = 'backup_' . $time . '_' . unique_id();
$mail = 'backup@mail.com';
$subj = 'backup';
$tables = get_tables($db);
$ext = new mysql_extractor(false, true, 'gzip', $filename, $time);
$ext->write_start($table_prefix);
foreach ($tables as $table_name){
    $ext->write_table($table_name);
    $ext->write_data($table_name);
}
$ext->write_end();

//send mail
$path = $phpbb_root_path . 'store/' . $filename . '.sql.gz';
$boundary = "==PHPBB-BY-VAMPIRUS-".md5(time());
$fp = fopen($path,"rb");
$file = fread($fp,filesize($path));
fclose($fp);
$data = chunk_split(base64_encode($file));
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary="$boundary"\n";
$headers .= 'From: vampirus@site.ru'. "\n";
$message = "blabla\nThis is a multi-part message in MIME format.\n\n" .
                    "--{$boundary}\n" .
                "Content-Type: text/plain; charset=koi8-r\n" .
                "Content-Transfer-Encoding: 8bit\n\n" .
                "backup\n\n";
$message .= "--{$boundary}\n" .
                "Content-Type: application/octet-stream;\n" .
                " name="{$filename}.sql.gz"\n" .
                "Content-Disposition: attachment;\n" .
                " filename="{$filename}.sql.gz"\n" .
                "Content-Transfer-Encoding: base64\n\n" .
                $data . "\n\n" .
                "--{$boundary}--\n";
mail($mail,$subj,$message,$headers);
unlink($path);
?>

естественно на хосте должно быть установлено расширение zlib для php.
Осталось теперь только в cron задание добавить. Бэкапы шлуются на мыло на гмэйле, помойму самый лучший вариант).