Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Чтение листинга удаленной директории посредством fsockopen();

Сообщения:  [1-10]   [11-16] 

 
 автор: interest_quastion   (20.08.2007 в 05:35)   письмо автору
 
   для: amigo62   (18.08.2007 в 16:54)
 

Замени эту строку:

fwrite($fp,"CWD /javamids/\r\n"); 


на эту:

fwrite($fp,"CWD javamids/\r\n"); 

   
 
 автор: amigo62   (18.08.2007 в 16:54)   письмо автору
 
   для: Trianon   (18.08.2007 в 00:47)
 

oops, насчет LIST я уже сам понял: CWD /javamids/ - слеш в конце лишний...

Блин и без него не отвечает...

   
 
 автор: amigo62   (18.08.2007 в 16:21)   письмо автору
 
   для: 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)   письмо автору
 
   для: amigo62   (17.08.2007 в 18:20)
 

протокол FTP

   
 
 автор: Unkind   (17.08.2007 в 23:25)   письмо автору
 
   для: amigo62   (17.08.2007 в 16:04)
 

Да, не туда посмотрел.

   
 
 автор: amigo62   (17.08.2007 в 18:20)   письмо автору
 
   для: Faraon   (17.08.2007 в 09:16)
 

Люди добрыя, неужели не знает никто?! =0

   
 
 автор: amigo62   (17.08.2007 в 16:25)   письмо автору
 
   для: Faraon   (17.08.2007 в 09:16)
 

добавил \r\n, не идет все равно

   
 
 автор: amigo62   (17.08.2007 в 16:04)   письмо автору
 
   для: Faraon   (17.08.2007 в 09:16)
 

Не к 30му, к 21му. 30 это таймаут

   
 
 автор: Unkind   (17.08.2007 в 15:37)   письмо автору
 
   для: amigo62   (17.08.2007 в 15:31)
 

1. Не "пучком" (это сессионый протокол), но переводы строк всё равно нужны.
2. Почему Вы обращаетесь к 30-ому порту? Там стандартно 21-ый.

   
 
 автор: amigo62   (17.08.2007 в 15:31)   письмо автору
 
   для: 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 ?

   

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования