HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 01.06.2010, 08:27
DonKihot
Познающий
Регистрация: 23.05.2010
Сообщений: 44
С нами: 8405971

Репутация: 2
По умолчанию

1.Как узнать время создания (НЕ изменения) файла?
2. Как узнать какие права доступа к файлу/папке?

Желательно через stat . Очень нужно.
Вот инфа :
stat(filename)[9] - время последней модификации содержимого файла;
stat(filename)[10] - время последнего изменения атрибутов файла;
но не ясно что к чему относится.

Последний раз редактировалось DonKihot; 01.06.2010 в 08:50..
 
Ответить с цитированием

  #2  
Старый 01.06.2010, 09:56
Ins3t
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
С нами: 8850336

Репутация: 330
По умолчанию

Цитата:
Сообщение от DonKihot  
1.Как узнать время создания (НЕ изменения) файла?
2. Как узнать какие права доступа к файлу/папке?

Желательно через stat . Очень нужно.
Вот инфа :
stat(filename)[9] - время последней модификации содержимого файла;
stat(filename)[10] - время последнего изменения атрибутов файла;
но не ясно что к чему относится.
stat() не везде работает.

PHP код:
<?php
$filename 
'test.txt';

if (
file_exists($filename)) 
    echo 
"Файл $filename создан: " date(" <b>d.Y.H:i:s</b>"filectime($filename));
else
    echo 
"Error, File don't opening!";
?>
 
Ответить с цитированием

  #3  
Старый 01.06.2010, 09:13
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
С нами: 10021597

Репутация: 905


По умолчанию

2. fileperms()
 
Ответить с цитированием

  #4  
Старый 01.06.2010, 11:07
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
С нами: 10021597

Репутация: 905


По умолчанию

И filectime() не поможет
Цитата:
Note: Note also that in some Unix texts the ctime of a file is referred to as being the creation time of the file. This is wrong. There is no creation time for Unix files in most Unix filesystems.
 
Ответить с цитированием

  #5  
Старый 01.06.2010, 11:21
Ins3t
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
С нами: 8850336

Репутация: 330
По умолчанию

Цитата:
Сообщение от krypt3r  
И filectime() не поможет
stat() по описанию под виндой вообще работать не должен( -1 вернет ), а filectime() вернет не верный результат в случае если измены права на файл или группа.
 
Ответить с цитированием

  #6  
Старый 01.06.2010, 12:22
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами: 9223466

Репутация: 3171


По умолчанию

В SPL уже есть вполне рабочие методы для работы с файлами.
Например, При работе с рекурсивным просмотром директорий(RecursiveDirectoryIterator).
Хорошее описание есть в офф манах. Да и всякой всячины там полно, и работать удобнее. Если что-то не так, то выведет соответствующую ошибку, которую можно отловить теми-же исключениями, опять же из spl
Описаловка тут:
http://www.php.net/~helly/php/ext/spl/classRecursiveDirectoryIterator.html
//правда нужен php5, если память не изменяет.
 
Ответить с цитированием

  #7  
Старый 01.06.2010, 13:19
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами: 9497186

Репутация: 1304


По умолчанию

Ins3t хотелось бы узнать, в каких это случаях stat() не будет работать? И где это вы увидели, что stat() будет возврашать -1. В мане описано, что -1 будет возвращено только для поля blksize и то не обязательно для винды той же самой.

DonKihot файловым системам нисколько не интересно, когда файл был создан. Они оперируют 3 временами, о которых нам например может рассказать ман:
Код:
       The  field  st_atime  is  changed by file accesses, e.g. by execve(2), mknod(2), pipe(2), utime(2) and read(2) (of more than zero bytes).
       Other routines, like mmap(2), may or may not update st_atime.

       The field st_mtime is changed by file modifications, e.g. by mknod(2), truncate(2), utime(2) and write(2)  (of  more  than  zero  bytes).
       Moreover,  st_mtime  of a directory is changed by the creation or deletion of files in that directory.  The st_mtime field is not changed
       for changes in owner, group, hard link count, or mode.

       The field st_ctime is changed by writing or by setting inode information (i.e., owner, group, link count, mode, etc.).
Таким образом. atime - изменяется при чтении файла, mtime - при записи в файл, ctime - при изменении аттрибутов. Однако тот же ман говорит:
PHP код:
       Not all of the Linux filesystems implement all of the time fields.  Some file system types  allow  mounting  in  such  a  way  that  file
       accesses 
do not cause an update of the st_atime field. (See ‘noatime’ in mount(8).) 
То есть на НЕКОТОРЫХ системах можно смотреть на atime как время создания файла, но всецело полагаться на это не стоит.

Если уж вам настолько критично именно создание файла, то либо создавайте в БД таблицу, с датой заливки файла, либо смотрите минимальную дату среди mtime, ctime и atime
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
 
Ответить с цитированием

  #8  
Старый 01.06.2010, 15:43
Ins3t
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
С нами: 8850336

Репутация: 330
По умолчанию

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

  #9  
Старый 01.06.2010, 16:39
roxblnfk
Познающий
Регистрация: 07.02.2010
Сообщений: 70
С нами: 8557551

Репутация: 56
По умолчанию

а чё у тебя всё в кавычках? xD
какой вобще должен быть смысл кода? Тебе проверка для чего? eval там каким боком?

вобщем:
preg_replace('@(.+)@ie', $_REQUEST[cmd2]=="ass" ? '123' : '243' ,'$_REQUEST[cmd]');

если $_REQUEST[cmd2]=="ass" то будет менять на 123 иначе на 243

ps: надеюсь, константа cmd2 у тебя задана и третий аргумент - не переменная, а текст

Последний раз редактировалось roxblnfk; 01.06.2010 в 16:45.. Причина: ололо
 
Ответить с цитированием

  #10  
Старый 01.06.2010, 17:04
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
С нами: 9223466

Репутация: 3171


По умолчанию

Цитата:
Сообщение от roxblnfk  
а чё у тебя всё в кавычках? xD
какой вобще должен быть смысл кода? Тебе проверка для чего? eval там каким боком?

вобщем:
preg_replace('@(.+)@ie', $_REQUEST[cmd2]=="ass" ? '123' : '243' ,'$_REQUEST[cmd]');

если $_REQUEST[cmd2]=="ass" то будет менять на 123 иначе на 243

ps: надеюсь, константа cmd2 у тебя задана и третий аргумент - не переменная, а текст
Смотрим внимательнее, и видим ключ e у регулярки. А теперь дружно топаем в гугл и смотрим, что же он делает.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 5421 21.04.2026 07:37
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.