Archive for the ‘Web’ Category

Библиотека для инвертирования hex-кодов цвета на php

<?php
/**
 * Inverses a provided hex color. If you pass a hex string with a 
 * hash(#), the function will return a string with a hash prepended
 * @param string $color Hex color to flip
 * @return string Reversed hex color
 * @author Koncept
 * 
 * Last Update: 2008-10-05
 */
function inverseHex( $color )
{
 $color       = trim($color);
 $prependHash = FALSE;

 if(strpos($color,'#')!==FALSE) {
 $prependHash = TRUE;
 $color       = str_replace('#',NULL,$color);
 }

 switch($len=strlen($color)) {
 case 3:
 $color=preg_replace("/(.)(.)(.)/","\\1\\1\\2\\2\\3\\3",$color);
 break;
 case 6:
 break;
 default:
 trigger_error("Invalid hex length ($len). Must be a minimum length of (3) or maxium of (6) characters", E_USER_ERROR);
 }

 if(!preg_match('/^[a-f0-9]{6}$/i',$color)) {
 $color = htmlentities($color);
 trigger_error( "Invalid hex string #$color", E_USER_ERROR );
 }

 $r = dechex(255-hexdec(substr($color,0,2)));
 $r = (strlen($r)>1)?$r:'0'.$r;
 $g = dechex(255-hexdec(substr($color,2,2)));
 $g = (strlen($g)>1)?$g:'0'.$g;
 $b = dechex(255-hexdec(substr($color,4,2)));
 $b = (strlen($b)>1)?$b:'0'.$b;

 return ($prependHash?'#':NULL).$r.$g.$b;
}

// Demo
echo inverseHex('#000000'); // #ffffff
?>

Несколько блогов на одном движке вордпресса.

Уже писал про скрипт массовой установки вордпресса, но вот появилось более оптимальное решение, как это сделать. При установке 100 штук вп моим скриптом, занимается очень много места на сами дистрибутивы + логи, поэтому найти решение как спасти интернеты дисковое пространство.
kretin015 Read On…

Небольшой хак для навигации

Немного подправил свой код постраничной навигации для вп. Теперь выводится название месяца, если листать архивы и название категории, если листать категорию.
[audio:http://alexvolkov.ru/wp-content/uploads/2009/09/70c7b985a0e0.mp3]

<?php if(!is_single()){?>                                                         
 <?php                                                                   
 $max_page = $wp_query->max_num_pages;                             
 if(empty($paged) || $paged == 0) {                                
 $paged = 1;                                               
 }                                                                 
 ?>                                                                      
<div id="alt_nav">                                                                
 <div>                                                           
<?php if(!is_paged()){ ?>                                                         
<?php if(is_category()){  single_cat_title(); }?>                                 
<?php if(is_archive()){  the_time('F'); }?>                                       
 <?php } else { ?>                                                          
 Page <?php echo $paged; }?></div>                                     

 <ul id="mycarousel">                               
 <?php
 for($i=1; $i<$max_page+1; $i++){
 if($i == $paged){ ?><li><?php echo $i;?></li>
 <?php } else { ?>
 <li><a href="<?php echo clean_url(get_pagenum_link($i));?>"><?php echo $i;?></a></li>
 <?php } }?>
 </ul>
</div>
<?php }?>

У Neolota заметил полезную штучку — подсказки по вп в пдф.

Календарь в стиле iCal для архивов в wordpress

Давно пылится в черновиках красивый примерчик для календаря. В оригинале календарь под хтмл, я приладил для вордпресса, на страницу архивов по месяцам.
Вот тут можно посмотреть календарь в действии, скрин
calendar Read On…

Критическая уязвимость в wordpress

На секлабе проскальзывала новость о том, как удаленно скинуть пароль админа в вп.
Если кратко, то вот так:

wp-login.php?action=rp&key[]=

И вот уже червячок появился.
Что делает. Подставляет свой код, расположенный на другом сервере и выполняет его. Уязвимы версии до 2.8.4

Проверяемся

Беглый осмотр.
Если все ссылки или фид стали со странными дополнениями вида

eval(base64_decode($_SERVER[HTTP_REFERER]))

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

grep -H -r “eval(base64_decode” /var/lib/mysql
grep -H -r “var setUserName = function” /var/lib/mysql

Если есть совпадение, то значит база заражена. Также можно проверить папки на инлюд функции:

grep -r -i "function gpc_" ./*

У себя три блога нашел взломанных. Проверить наличие левых администраторов в блоге

Лечимся.

  • Правим пермалинки.
  • Далее из таблицы wp-usermeta.php запоминаем все id юзеров с meta_key — ‘first_name’.
  • Потом сносим их из wp_users.
  • Удаляем их также и из wp-usermeta.php

Шорткоды для вордпресса.

Шорткоды (англ.shortcodes) это короткие коды для вызова функций. Функции могут быть в теме, можно написать самому. Удобство заключается в том, что не надо писать в шаблон кучу строк кода, достаточно кинуть файл functions.php и подключать нужные функции простым вызовом макроса [function]. Read On…

WordPress и memcache 2

[audio:9d179c38ffe0.mp3]
Первая часть тут была.
Написал я тогда как сделать, а сам так и не сделал и результатов не посмотрел, насколько сильно помогает memcache для вп.
Кратко, для чего нужен memcache: при определенной нагрузке, вордпресс начинает генерить очень много запросов и завешивает базу. Меня когда одни редиски досили, первое, что отвалилось так это база. Не могу установить соединение с базой данных — частенько выдает вордпресс. Memcached кеширует запросы к базе, тем самым снимая ее с БД (и перекладывая на оперативку 🙂 )
Также я изначально отказался от плагинов, например batcache. Как установить плагин итак все знают.
Read On…

Постраничная навигация при помощи jQuery

jQuery, jCarousel, немного PHP и HTML/CSS и получится такая навигация, как у меня внизу на главной. При желании можно доделать до любой формы. Еще это минус один плагин, что есть гуд в плане ресурсов. Read On…

css.php