- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
// Выведем все ошибки на чистую воду :)
error_reporting(E_ALL);
/**
* Рекурсивное изменение прав
* @param string $path - Путь (файл или каталог)
* @param int $filemode - Права, например 0755
* @return - bool FALSE если не удалось, TRUE если удалось
*/
function chmodTree($path, $filemode) {
if (!is_dir($path)) return chmod($path, $filemode);
$dir = opendir($path);
while ($file = readdir($dir))
if ($file != '.' && $file != '..') {
$fullpath = $path.'/'.$file;
if (is_link($fullpath)) return FALSE;
if (is_dir($fullpath))
if (!chmodTree($fullpath, $filemode)) return FALSE;
if (is_file($fullpath))
if (!chmod($fullpath, $filemode)) return FALSE;
}
closedir($dir);
return chmod($path, $filemode);
}
// Функция file_put_contents появляется только в PHP 5.0 ;(
if (!function_exists('file_put_contents')) {
function file_put_contents($filename, $data) {
if (!($f = @fopen($filename, 'w'))) {
return FALSE;
} else {
$bytes = fwrite($f, $data);
fclose($f);
return $bytes;
}
}
}
/**
* Получает файл с удалённого хоста, показывает и сохраняет в кеше
* @param string $RemoteFile - файл на удалённой машине
* @param string $LocalFile - локальный файл для сохранения
*/
function CashedFile($RemoteFile, $LocalFile) {
// Пытаемся получить файл с удалённого хоста
$text = @file_get_contents($RemoteFile); // Игнорируем ошибки
if ($text === FALSE) {
// Если не удалось получить файл, тогда читаем копию из кеша
$text = file_get_contents('cache/'.$LocalFile);
} else {
// Если каталога с кешем нет => создаём его
if (!file_exists("cache"))mkdir("cache");
// Ставим права на каталог
chmodTree("cache", 0777);
// Записываем полученный документ в файл
file_put_contents('cache/'.$LocalFile, $text);
}
// Отдаём браузеру то что удалось скачать :)
echo $text;
}
Кусок быстосляпанного кода для подгрузки частей сайта из Google Docs.
Практически нечитаемый код, но работает, подгружает файлы с удаленного хоста, складывает их в каталог, потом оттуда читает.
Непонятно, зачем нужна функция chmodTree, каталог cache же одноуровневый.
paranoid 10.09.2009 15:37 # 0
denis 10.09.2009 16:05 # 0
guest 10.09.2009 16:21 # 0
denis 10.09.2009 16:49 # 0
а мож и объяснили хоть немного, как ПРАВИЛЬНО кодить на PHP :))
Ни одной книжки толковой по PHP найти не могу.. Попробовал читать быдлокнижку "PHP глазами хакера", в ней полно ошибок (или просто опечаток) и советы очевидные только, не ясно, как всё сделать красиво
guest 10.09.2009 16:40 # 0
denis 10.09.2009 16:45 # 0
Я только начинаю программировать на PHP и не понимаю пока его дзен.
Пытался найти какой-нибудь сайт с примерами хорошей практики на PHP - не нашёл, нашёл только govnokod.
Есть ли сайты с действительно хорошими советами, как писать большие проекты на PHP.
guest 10.09.2009 17:01 # 0
Suor 14.09.2009 12:44 # 0
denis 25.09.2009 02:28 # 0
guest 10.09.2009 18:45 # 0
---------------
static function menu_catalog_parent($parent_id,$array) {
$return = false;
$template = shell_catalog::_shell_menu_cat();
self::$tab = self::$tab+20;
foreach($array as $id => $parent) {
if(isset($parent['parent_id-'.$parent_id])) {
$parent['parent_id-'.$parent_id] = charset_x_win($parent['parent_id-'.$parent_id]);
$id = str_replace('id-','',$id);
$temp = $template[2];
if(isset($_GET['cat']) && (int)$_GET['cat'] == $id) {
$parent['parent_id-'.$parent_id] = '<b>'.$parent['parent_id-'.$parent_id].'</b>';
$temp = str_replace('[BG]',$template[3],$temp);
if(!preg_match('/(,'.$id.')/',$_SESSION['level_menu_cat']))
$_SESSION['level_menu_cat'] .= ','.$id;
} else {
$temp = str_replace('[BG]','',$temp);
}
$temp = str_replace('[ID]',$id,$temp);
$temp = str_replace('[NAME]',$parent['parent_id-'.$parent_id],$temp);
$return .= $temp;
$parent_cat = catalog::menu_catalog_parent($id,$array) ;
if($parent_cat) {
$parent_cat = str_replace('[CAT]',$parent_cat,$template[4]);
$parent_cat = str_replace('[ID]',$id,$parent_cat);
$return .= $parent_cat;
}
}
}
return $return;
}
guest 10.09.2009 21:54 # 0
TWINc 10.09.2009 22:33 # 0
C:\Users\TWINc>chmod
'chmod' is not recognized as an internal or external command,
operable program or batch file.
TWINc 10.09.2009 22:34 # +1
<?php
$i = 0; // устанавиваем i в ноль
$++; // увеличиваем i на 1
//...