|
|
|
| Всем доброго времени суток! Сейчас на многих серверах с рнр 5 почему-то косят функции ftp_*list();, и приходится искать альтернативу. Одну уже нашел- curl =), но дело вот в чем. Собираюсь доработать публичный скрипт WAP-ftp, который зачастую ставят админы на халявных хостингах, а на них cURL бывает реже, чем рнр 5 ;). Следовательно, fsockopen рулит)) Буду благодарен за любую инфу о том, как правильно отправить запрос на получение "сырого" листинга, т.к. ничего об этом не знаю...
ps честно юзал поиск, но толку мало, слово "ftp" не ищется :( | |
|
|
|
|
|
|
|
для: amigo62
(16.08.2007 в 23:26)
| | Ищите на яндексе "протокол FTP".. Прочитайте.. Потом "пуск-выполнить-telnet".. Попробуйте там то, о чем прочитали. А потом и с fsockopen() проблем не будет никаких.. | |
|
|
|
|
|
|
|
для: kasmanaft
(16.08.2007 в 23:32)
| | Вы бы еще ссылку дали, вдруг я не знаю. Неужели так трудно написать три команды, которые пихают в fputs();? Я бы и тему не стал поднимать, было бы все так просто... Попробуйте что-нибудь написать, имея лишь самый обычный мобильник, и Вы меня поймете | |
|
|
|
|
|
|
|
|
для: Faraon
(17.08.2007 в 09:16)
| | Спасибо, но все эти темы я смотрел еще вчера.... Там в основном о http и немного о smtp :( | |
|
|
|
|
|
|
|
для: Faraon
(17.08.2007 в 09:16)
| | Вобщем, я попытаюсь составить запрос из того что понял, а вы меня поправите, если что то не сработает, ок? надеюсь на вас :) | |
|
|
|
|
|
|
|
для: Faraon
(17.08.2007 в 09:16)
| | Ну как и следовало ожидать- не работает... Сервер не отвечает на обращение к скрипту
<?php
$user="login";
$password="password";
$fp=fsockopen("wen.ru",21,$errno,$errstr,30);
if(!$fp) echo"$errstr($errno)";
else
{
$line="";
fwrite($fp,'USER '.$user);
while(!feof($fp)){$line.=fgets($fp,1024);}
fwrite($fp,'PASS '.$password);
while(!feof($fp)){$line.=fgets($fp,1024);}
fwrite($fp,'CWD /javamids/');
while(!feof($fp)){$line.=fgets($fp,1024);}
fwrite($fp,'PASV');
while(!feof($fp)){$line.=fgets($fp,1024);}
fwrite($fp,'LIST');
while(!feof($fp)){$line.=fgets($fp,1024);}
fwrite($fp,'QUIT');
while(!feof($fp)){$line.=fgets($fp,1024);}
fclose($fp);
echo $line;
}
?>
| может, команды надо пучком слать через \r\n ? | |
|
|
|
|
|
|
|
для: amigo62
(17.08.2007 в 15:31)
| | 1. Не "пучком" (это сессионый протокол), но переводы строк всё равно нужны.
2. Почему Вы обращаетесь к 30-ому порту? Там стандартно 21-ый. | |
|
|
|
|
|
|
|
для: Faraon
(17.08.2007 в 09:16)
| | Не к 30му, к 21му. 30 это таймаут | |
|
|
|
|
|
|
|
для: amigo62
(17.08.2007 в 16:04)
| | Да, не туда посмотрел. | |
|
|
|
|
|
|
|
для: Faraon
(17.08.2007 в 09:16)
| | добавил \r\n, не идет все равно | |
|
|
|
|
|
|
|
для: Faraon
(17.08.2007 в 09:16)
| | Люди добрыя, неужели не знает никто?! =0 | |
|
|
|
|
|
|
|
|
для: Trianon
(18.08.2007 в 00:47)
| | Ура, заработало!!! Правда, немного косячно =) вот это я написал:
<?php
$user="user";
$password="****";
$fp=fsockopen("wen.ru",21);
if($fp)
{
$line="Begin: ";
$line.=fread($fp,1024)."<br />";
fwrite($fp,"USER ".$user."\r\n");
$line.="USER answer: ".fread($fp,1024)."<br />";
fwrite($fp,"PASS ".$password."\r\n");
$line.="PASS answer:".fgets($fp,1024)."<br />";
fwrite($fp,"CWD /javamids/\r\n");
$line.="CWD answer:".fgets($fp,1024)."<br />";
fwrite($fp,"PASV\r\n");
$line.="PASV answer:".fgets($fp,1024)."<br />";
fwrite($fp,"LIST\r\n");
$line.="LIST answer:".fgets($fp,1024)."<br />";
fwrite($fp,"QUIT\r\n");
fclose($fp);
echo $line;
}else{echo "failed";}
?>
| а вот это результат:
Begin: 220 -WEN.RU
FTPD 1.0
USER answer: 220
81.222.134.82 FTP
server ready
PASS answer:331
Password required
for....
| Возник ряд вопросов:
- почему в данном случае сервер "не успел"с ответом (так бывает не всегда)?
-почему я так и не дождался ни разу ответа на команду list?
-почему скрипт жутко тормозит (работает раз в 10 медленнее аналогов на curl или стандартных функциях ftp)?
-почему иногда приходит ответ, что кол-во подключений по данной учетке больше одного (это максимум для wen.ru)?
-и самое главное, что исправить, чтобы чтобы скрипт работал не хуже, чем на стандартных функциях ftp? | |
|
|
|
|
|
|
|
для: Trianon
(18.08.2007 в 00:47)
| | oops, насчет LIST я уже сам понял: CWD /javamids/ - слеш в конце лишний...
Блин и без него не отвечает... | |
|
|
|
|
|
|
|
для: amigo62
(18.08.2007 в 16:54)
| | Замени эту строку:
fwrite($fp,"CWD /javamids/\r\n");
|
на эту:
fwrite($fp,"CWD javamids/\r\n");
|
| |
|
|
|