|
|
|
| Привет всем!
Помогите пожалуйста!
Есть локалка:
Там открыт фаловый сервер (фильмы, клипы, музыка и т.п) через ftp
Он открыт для всех и пароля не требуется.
Но как мне с ним связаться при помощи пхп. Пробую:
<?php
$ip = '192.168.xxx.xxx.';
$user = "";
$pass = "";
$fc = ftp_connect($ip);
if($fc) echo "connect";
else echo "not connect";
//все ОК - (connect)
$res = ftp_login($fc, $user, $pass);
if($res) echo "ok";
else echo "no";
// не OK - (no)
?>
|
Вот в ftp_login() и не получается. Я пробавал разные имена, разные пароли, разные ip вместо них подставлять, вообще без пароля, но всеравно не хочет. Так вот какой же мне пароль или имя поставить или может что-то другое надо сделать. Ведь так то я могу без пароля заходит, значит его вообще не надо. Пожалуйста подскажите, что нужно сделать, может я что-то неправильно делаю. | |
|
|
|
|
|
|
|
для: Антоха
(11.12.2006 в 05:10)
| | Если пароля нет - пользователь всё равно "anonymous"
//Соединение с сервером
$ftp = ftp_connect($host);
ftp_pasv($ftp, TRUE);
$time=time();
//Авторизация на сервере.
$ftp_flag=FALSE;
while (!$ftp_flag) {
$ftp1 = @ftp_login($ftp, "anonymous",'');
if ($ftp1) {$ftp_flag=TRUE;}
if (time()-$time>20) {
echo "Нет соединения";
exit();
}
}
$content=0;
//Запрашиваем список.
$buf = ftp_nlist($ftp, $dir);
|
| |
|
|
|
|
|
|
|
для: tuder
(11.12.2006 в 08:52)
| | >Если пароля нет - пользователь всё равно "anonymous"
А в качестве пароля лучше передать произвольный e-mail, ряд FTP-серверов только при таких параметрах принимают анонимных пользователей. | |
|
|
|
|
|
|
|
для: cheops
(11.12.2006 в 13:47)
| | Ага, на сервер я зашел, но теперь возникла проблема, как мне "просматривать" фаилы и папки.
Функция ftp_nlist() - выдает только имена файлов, а имена папок не выдает. Функция ftp_rawlist() выдает всё (точнее слишком много всего). Как мне сделать, чтобы просмотреть фаилы и каталоги, а не только файлы. Мож есть какая функция, которую можно применить? Пожалуйста подскажите что-нибудь. | |
|
|
|
|
|
|
|
для: cheops
(11.12.2006 в 13:47)
| | Ага, на сервер я зашел, но теперь возникла проблема, как мне "просматривать" фаилы и папки.
Функция ftp_nlist() - выдает только имена файлов, а имена папок не выдает. Функция ftp_rawlist() выдает всё (точнее слишком много всего). Как мне сделать, чтобы просмотреть фаилы и каталоги, а не только файлы. Мож есть какая функция, которую можно применить? Пожалуйста подскажите что-нибудь. | |
|
|
|
|
|
|
|
для: Антоха
(11.12.2006 в 23:09)
| | А больше, к сожалению, ничего нет - извлекайте список подкаталогов и файлов из отчёта функции ftp_rawlist(), например, при помощи конструкции
<?php
$file_list = ftp_rawlist($ftp_handle, $directory);
foreach($file_list as $file_single)
{
// Разбиваем строку по пробельным символам
list($acc,
$bloks,
$group,
$user,
$size,
$month,
$day,
$year,
$file) = preg_split("/[\s]+/", $file_single);
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(11.12.2006 в 23:34)
| | Млин... Опять у меня проблема. Как мне вывести у определенного каталога все его файлы, под каталоги и файлы в подкаталогах? Делаю вот так, но не получается:
<?php
$dir = "./Фильмы";
function scann($dir) {
GLOBAL $ftp;
$buf = ftp_rawlist($ftp, $dir);
foreach($buf as $f) {
list($acc,
$bloks,
$user,
$group,
$size,
$month,
$day,
$year,
$file) = preg_split("/[\s]+/", $f);
// Предположим, что если $size = 0, то это скорее всего каталог
if($size == 0) {
if($file != "." && $file != "..") {
scann($dir."/".$file);
}
}
}
}
scann($dir);
?>
|
Не могу понять как мне всё правильно сделать и где собственно ошибка. | |
|
|
| |
|
|
|
|
для: tuder
(12.12.2006 в 07:10)
| | Посмотрел, не че не понял. Какой-то скрипт, у меня не работает (точнее выдает не то), вроде все подправил в нем и че то там много лишнего всего. Мне же нужно, чтобы просто выдавался список всех файлов и каталогов.
В той теме кто-то написал: для того, чтобы узнать файл это или каталог применяется функция ftp_size() если выдает -1 значит каталог, но у меня это не работает (везде выдается -1). Но в принципе можно сделать так:
<?php
// Код продолжается (смотрите предыдущий код)
if(preg_match("/^d/", $acc)) echo $file." = katalog<br>";
?>
|
Так вроде работает, но суть не в этом. Мне надо просто как-нибудь пробежатся по нужной директории и получить желаемый результат. Вот как мне это сделать? Подскажите плиз... | |
|
|
|
|
|
|
|
для: Антоха
(12.12.2006 в 10:05)
| | Размер будет, вроде, выдаваться на юниховых хостингах, в Виндовсе -1
Скрипт, да, маленько для другого пердназначен, но тоже должен показывать каталоги с файлами, да ещё перемещаться по ним.
Дан в качестве примера. | |
|
|
|
|
|
|
|
для: tuder
(12.12.2006 в 13:25)
| | Еще раз попробовал этот скрипт всеравно не работает. Просто я в пхп на нулевом уровне, так что твой скрипт не совсем понимаю. Он вроде работает по определению функции ftp_size(), (это как я понял), но т.к эта функция у меня везде выдает -1, то скорее всего по этому и не работает. А мне нужен скрипт который я бы понимал. "Мой" скрипт выше вроде нормально работает , просто там ошибка где-то. Допустим:
ищем в корневой директории (".") - он всё нормально проходит, узнает файлы и каталоги, но вот как дальше мне по найденым каталогам пробежатся? Я уже разное пробовал, но у меня почему то получается если он заходит в первый найденый каталог, он там тоже всё находит, но зацикливается в нем и не может вырватся. Скорее всего ошибка получается в - пути, который передается функции. Пожалуйста скажите, как правильно всё сделать. | |
|
|
|
|
|
|
|
для: Антоха
(12.12.2006 в 23:57)
| | Вот, кое-как, что-то сделал:
<?php
function scann($dir) {
GLOBAL $ftp;
$buf = ftp_rawlist($ftp, $dir);
foreach($buf as $f) {
list($acc, $bloks, $user, $group,
$size, $month, $day, $year,
$file) = preg_split("/[\s]+/", $f);
if(preg_match("/^d/", $acc)) {
if($file != "." && $file != "..") {
echo $dir."/".$file."<br>";
scann($dir."/".$file);
}
}
else {
echo $file."<br>";
}
}
}
scann($dir);
?>
|
но не могу рассортировать всё это. Нужно чтобы было как есть - идут каталоги в алф. порядке, потом файлы в алф. порядке. Перепробовал все (sort, ksort, rsort и т.п) разные флаги (SORT_[REGULAR],[NUMERIC],[STRING]), нет желаемого результата. Значит, наверное функцию надо переделывать, вот только не знаю как. Может кто-нить поделится скриптом или поможет исправить этот! Плиз. ПАМАГИТЕ. | |
|
|
|
|
|
|
|
для: Антоха
(13.12.2006 в 02:38)
| | У тебя тут многое не понятно.
Что за $f в foreach?
Что находится в $dir передаваемой функции?
То, что функция зацикливается - это понятно. У тебя в ней рекурсивный вызов самой себя:
scann($dir."/".$file);
И всё-таки что в итоге требуется? Отразить единственный каталог? Или сделать этакий файл-менеджер, позволяющий в бровзере "гулять" по каталогам фтп? | |
|
|
|
|
|
|
|
для: tuder
(13.12.2006 в 10:16)
| | Извени, не знаю конечно, что тебе здесь не понятно.
Что находится в $dir передаваемой функции?
Можно и самом интуитивно догадатся что там находится, конечно же имя директории, которую мы сканируем, а можно было бы и выше посмотреть код, который я там писал, нашел бы
$dir = "./Фильмы";
Что за $f в foreach?
Почему тебе не понятно? Функция ftp_rawlist() помещает все результаты в массив $buf, дальше мы пробегаемся по этому массиву циклом foreach
<?php
foreach($buf as $f) \\ где перемунную $f можно назвать как угодно - это же значение
?>
|
Т.к. ftp_rawlist() выдает слишком много всего лишнего, то мы при помощи и preg_split() разбиваем $f, на "блоки" list(переменные) - последняя переменная $file будет содержать имя файла или каталога, а самая первая переменная $acc будет содержать либо drw-rw-rw- (если это каталог), либо -rw-rw-rw- (если это файл), вот тут то мы и проверяем:
<?php
//если $acc начинается на "d", то значит это каталог,
if(preg_match("/^d/", $acc))
// вызываем рекурсивно функцию и передаем ей $dir."/".$file
scann($dir."/".$file);
?>
|
И если ты не заметил, то у меня вроде худо-бедно, получилось как то пробежатся по нужно директории, но я написал вопрос, как мне рассортировать все это, чтобы было как есть. Сначала каталоги идут в алф. порядке, потом файлы в алф. порядке.
Спасибо. | |
|
|
|
|
|
|
|
для: Антоха
(13.12.2006 в 19:47)
| | А еще, хотел собственно сказать для чего вообще мне это всё надо.
Дело в том, что я и так могу просмотреть в браузере всё это. А я в основном ищу фильмы и скачиваю их. Но большую часть уже просмотрел. И т.к файловый сервер пополняется фильмами, искать новые фильмы (а их более 900), согласитесь не очень удобно. Вот с вашей помощью я и хочу написать скриптик, который бы делал разные манипуляции с поиском. Надеюсь вы мне поможите.
Спасибо. | |
|
|
|
|