Рекурсивное изменение прав доступа (CHMOD) на PHP

Понедельник, 05 Июл 2010 9:41

Очень часто приходится работать с хостингами, на которых отсутствуют элементарные средства перебивки прав доступа. Глядя на эту несправедливость я решил написать простой скрипт по изменению прав (chmod), так как на 99% хостингов права вебсервера (webserver(99)) отличны от прав ftp пользователя, в результате при создании файлов вебсервером их потом невозможно удалить или изменить по фтп. Ну думаю вы и сами встречались с такой проблеммой.

Сделать это рекурсивно можно, исполнив PHP-сценарий

Вот пример:

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
<?php
 function chmod_R($path, $perm) {
 
   $handle = opendir($path);
   while ( false !== ($file = readdir($handle)) ) {
     if ( ($file !== ".") && ($file !== "..") ) {
       if ( is_file($path."/".$file) ) { //если текущая позиция это файл то...  
         chmod($path . "/" . $file, $perm['f']);
       }
       else { //если текущая позиция это папка то...  
         chmod($path . "/" . $file, $perm['d']);
         chmod_R($path . "/" . $file, $perm); // рекурсивно проверяем папочку
       }
     }
   }
   closedir($handle);
 }
 
 $path = $_SERVER["QUERY_STRING"];

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

$perm=array();
$perm['f']=0644; // эти права будут установлены для файлов
$perm['d']=0755; // а эти для папок
 chmod_R($path, $perm);
 echo $path;
?>

Русские ссылки в Joomla без дополнительного плагина

Воскресенье, 06 Июн 2010 11:39

Для получения более красивых ссылок генерируемых jommla! из названия модуля, раздела, статьи и пр. (вид url http://wwwizero.ru/Раздел/Название-статьи.html ) без использования сторонних SEF компонентов плагинов, например yvTransliterate, необходимо внести изменения в файле libraries\joomla\filter\filteroutput.php.

в функции JFilterOutput::stringURLSafe вместо

1
2
3
4
5
$lang =& JFactory::getLanguage();
$str = $lang->transliterate($str);

// remove any duplicate whitespace, and ensure all characters are alphanumeric
$str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str);

заменить строкой

1
$str = preg_replace(array('/\s+/','/[^A-Za-zА-Яа-яЁё0-9\-]/u'), array('-',''), $str);

Прозрачный баннер или счетчик

Пятница, 04 Июн 2010 11:46

Многие наверно видели прозрачные счетчики которые при наведении курсора становились обычными…Так вот речь пойдет как раз о том как этого эффекта добится, причем мы не будем использовать ***.js , только файл стилей (***.css) вашего сайта.
Есть много вариантов как этого добится, но мы рассмотрим только два самых оптимальных
Читать полностью »

Подключение шаблонов к своему PHP скрипту. Шаблонизатор

Пятница, 04 Июн 2010 11:01

Подключение шаблонов к своему PHP скрипту. Шаблонизатор Шаблонизатор является основным модулем системы любой CMS системы. Думаю почему я так считаю объяснять не надо. Любая CMS должна быть гибкой и представлять определённый минимальный набор функционала и сочетать универсальность подстройки дизайна. Именно универсальность интеграции дизайна и позволяет реализовать шаблонизатор. Шаблонизаторы бывают разных типов, от основанных на php шаблонах (самые простые) и до блочно модульных. Первый тип шаблонизаторов достаточно прост в реализации, но в свою очередь и более громоздкий, так как для интеграции требует как минимум базового знания языка программирования. По этому я хочу рассказать о втором типе.
Итак, как де все-таки должен работать такой шаблонизатор?

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

Ограничение вывода количества слов в предложении в PHP

Понедельник, 31 мая 2010 22:11

Есть несколько способов ограничения количества слов:
1. Само ограничение по количеству слов. Т.е. выводиться будут первые n слов.
2. Ограничение по количеству символов. Тут два варианта:
а. Твердое ограничение по количеству символов. Предложение может быть обрезано на половине слова. Плохой вариант.
б. Без обрезания слова.
Понятно, что наиболее хорошими вариантами являются варианты 1 и 2б. При этом, если есть ограничение блока на количество символов, то лучше использовать способ 2б.
Вот функции:
1. Ограничение на количество выводимых слов:
Читать полностью »