Php(работа с файлами)
Я сделал загрузку на сервер в папку upload. И теперь хочу при помощи РНР просмотреть все содержимое папки, и сгенерировать список файлов в папке вместе с ссылками на них (файлы) чтобы можно-было загрузить. Проблема в том - чтобы просмотреть все файлы в папке. Не подскажете-ли как это сделать?
dir
new dir(string directory);
Псевдо-объектно ориентированный механизм для чтения каталога. Открывает каталог из directory. Два реквезита доступно, если только каталог был открыт. Реквезит handle может быть использован вместе с другими функциями работы с каталогом типа readdir(), rewinddir() и closedir(). Реквезит path установлен путь каталога, который был открыт. Три метода доступны: чтение, возврат к началу и закрытие.
Пример:
$d = dir("/etc");
echo "Handle: ".$d->handle."
\n";
echo "Path: ".$d->path."
\n";
while($entry=$d->read()) {
echo $entry."
\n";
}
$d->close();
Sveiks !
dir
new dir(string directory);
Псевдо-объектно ориентированный механизм для чтения каталога. Открывает каталог из directory. Два реквезита доступно, если только каталог был открыт. Реквезит handle может быть использован вместе с другими функциями работы с каталогом типа readdir(), rewinddir() и closedir(). Реквезит path установлен путь каталога, который был открыт. Три метода доступны: чтение, возврат к началу и закрытие.
Пример:
$d = dir("/etc");
echo "Handle: ".$d->handle."
\n";
echo "Path: ".$d->path."
\n";
while($entry=$d->read()) {
echo $entry."
\n";
}
$d->close();
Liels paldies par atbilde!
Но у меня вот что пишется:
Warning: access to /uploaded from /3w/wz.cz/o/olegm denied in /3w/wz.cz/o/olegm/uploaded.php on line 2
Warning: dir() [function.dir]: open_basedir restriction in effect. File(/uploaded) is not within the allowed path. in /3w/wz.cz/o/olegm/uploaded.php on line 2
Warning: dir(/uploaded) [function.dir]: failed to open dir: Operation not permitted in /3w/wz.cz/o/olegm/uploaded.php on line 2
Handle:
Path:
Fatal error: Call to a member function on a non-object in /3w/wz.cz/o/olegm/uploaded.php on line 5
В чем проблема?
<?Php
$handle=opendir('.');
while (($file = readdir($handle))!==false)
echo "
".$file;
?>
хотя в том коде тоже ошибки, нет просто хостер тебе не дает посмотреть корневой каталог, чтобы все заработало поставь текущий смени:
<?php
$d = dir(".");
echo "Handle: ".$d->handle."
\n";
echo "Path: ".$d->path."
\n";
while($entry=$d->read()) {
echo $entry."
\n";
}
$d->close();
?>
<?php
$d = dir(".");
echo "Handle: ".$d->handle."
\n";
echo "Path: ".$d->path."
\n";
while($entry=$d->read())
{
echo "".$entry."
\n";
}
$d->close();
?>
И положил в папку uploaded. Но как сделать, чтобы проверять $entry и если его значение - название файла - себя "uploaded.php" - его не писать? Просто народ может взять, и вместо моего файла загрузить что-нибудь свое.
http://olegm.wz.cz/uploaded/uploaded.php
10x. Я немного переделал код в вот такой:
<?php
$d = dir(".");
echo "Handle: ".$d->handle."
\n";
echo "Path: ".$d->path."
\n";
while($entry=$d->read())
{
echo "".$entry."
\n";
}
$d->close();
?>
И положил в папку uploaded. Но как сделать, чтобы проверять $entry и если его значение - название файла - себя "uploaded.php" - его не писать? Просто народ может взять, и вместо моего файла загрузить что-нибудь свое.
http://olegm.wz.cz/uploaded/uploaded.php
Не понял проблемы:
<?php
$d = dir(".");
echo "Handle: ".$d->handle."
\n";
echo "Path: ".$d->path."
\n";
while($entry=$d->read())
{
if($entry!="uploaded.php")
echo "".$entry."
\n";
}
$d->close();
?>
$handle=opendir(".");
while($file = readdir($handle)) echo $file."
";
closedir($handle);
Вечно надо жизнь себе и скрипту усложнять?