[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: FTP клиент на php
Patrick
Кто нибудь делал подобную вещь?

Мне необходимо с одного сервера, закачать файлы на другой при этом следать это автоматически, а не в ручную.

Помогите с принципами создания.


Заранее благодарен.



Спустя 1 час, 2 минуты, 33 секунды (10.10.2006 - 09:50) Gandjubas написал(а):
QUOTE(Patrick)
Кто нибудь делал подобную вещь?

Мне необходимо с одного сервера, закачать файлы на другой при этом следать это автоматически, а не в ручную.

Помогите с принципами создания.


Заранее благодарен.

Я тоже этим занимаюсь, но пока далеко не ушёл!
Сейчас занимаюсь созданием FTP-сервером. А потом уж видно будет, как работать!
Так что давай делиться опытом:)

Спустя 1 час, 17 минут, 6 секунд (10.10.2006 - 11:07) Patrick написал(а):
Gandjubas,

Давай.:) Мне FTP клиент нужен для автоматической установки CMS, так что у меня задачка наверное по проще будет, а FTP сервер тоже на php ?

Спустя 59 минут, 32 секунды (10.10.2006 - 12:06) Gandjubas написал(а):
нет.
он на каком-то другом языке!

Спустя 1 день, 20 часов, 24 минуты, 8 секунд (12.10.2006 - 08:30) Patrick написал(а):
Gandjubas, Так а клиент на php ?

Спустя 1 час, 13 минут, 52 секунды (12.10.2006 - 09:44) Gandjubas написал(а):
QUOTE(Patrick)
Gandjubas, Так а клиент на php ?

ну естессно на ПиЭйчПи!
только мне ФТП нужен для закачки именно. та что у меня упрошённая версия клинте получится.

Спустя 2 дня, 2 часа, 25 минут, 18 секунд (14.10.2006 - 12:09) Patrick написал(а):
Gandjubas,
Надо как то через асю поговорить т.к. у меня много вопросов имеется.

Я собираюсь сделать( а точней делаю) что то вроде сервиса _www.use-it-now.com только для своей CMS. Что то уже сделано,что то ищё нет.:)

Спустя 1 день, 22 часа, 40 минут, 4 секунды (16.10.2006 - 10:50) Gandjubas написал(а):
QUOTE(Patrick)
Gandjubas,
Надо как то через асю поговорить  т.к.  у меня много вопросов имеется.

Я  собираюсь  сделать( а точней делаю) что то вроде сервиса  _www.use-it-now.com  только  для своей CMS. Что то уже сделано,что то ищё нет.:)

Через Асю не получится.
У меня тоже много вопросов. Сейчас меня тормозит то, что нет сети - пока не провели ко мне. Так бы я что-то делал. А на Денвере не уехать никак - не катит вообще с ФТП работать на нём. А апач ставить себе долго.

Спустя 21 час, 38 минут, 11 секунд (17.10.2006 - 08:28) Patrick написал(а):
:) Поставте Linux и lampp

Спустя 42 минуты, 39 секунд (17.10.2006 - 09:10) Gandjubas написал(а):
QUOTE(Patrick)
:) Поставте Linux и lampp

Ну и шутник.

Спустя 1 час, 8 минут, 6 секунд (17.10.2006 - 10:18) zilogo написал(а):
QUOTE
Поставте Linux и lampp

Т.е. поставить линукс, потом еще линукс ... это как ?:D

Спустя 48 минут, 45 секунд (17.10.2006 - 11:07) Patrick написал(а):
lampp - я имею ввиду пакет, аля денвер.

Спустя 45 минут, 3 секунды (17.10.2006 - 11:52) Gandjubas написал(а):
QUOTE(Patrick)
lampp -  я имею ввиду пакет, аля денвер.

а где таковой нати пакетик?

Спустя 6 часов, 10 секунд (17.10.2006 - 17:52) Patrick написал(а):
__http://www.apachefriends.org/en/xampp.html

Спустя 6 минут, 40 секунд (17.10.2006 - 17:59) pavel написал(а):
Тут http://rst.void.ru/index.php?page=releases есть скрипт для переноса информации по ftp между серверами. Написан на PHP.
Смотрите, может поможет...

Спустя 13 дней, 15 часов, 5 минут, 3 секунды (31.10.2006 - 10:04) Gandjubas написал(а):
Ну как дела продвигаются!
Я тут по ссылочке сходил. Про файл r57shell.php - или что-то вроде того. Так там так много прикольного :) И там есть пример закачки с одного сервера на другой.
На его основе у меня возник такой ништячный концепт.
интерфейс по типу тотал командера, только придётся воспользоваться Джавой скриптом.
Поскольку у меня сеточки так и не появилась, то далеко в реализации своих идей я не ушёл. :(
Но идеями могу поделиться - пиши в аську 224941341

Спустя 4 минуты, 37 секунд (31.10.2006 - 10:09) dreadboy написал(а):
о господи! господа!? у меня ушло 5 минут на ftp-клиент!
http://ru2.php.net/manual/ru/ref.ftp.php

и всё!

Спустя 2 часа, 40 минут, 3 секунды (31.10.2006 - 12:49) Gandjubas написал(а):
QUOTE(dreadboy)
о господи! господа!? у меня ушло 5 минут на ftp-клиент!
http://ru2.php.net/manual/ru/ref.ftp.php

и всё!

И что ты нам ссылку на ДОК дал?
У меня есть доки и у Питрика, тоже, думаеца.
Если бы ты сам клиент кинул.

И тем более нам нужен с вэб интерфейсом, человеческим. А не так как с командной строкой!
И не надо так убиваться (о, Господи!) - есть на свете и маньяки!

Спустя 13 минут, 49 секунд (31.10.2006 - 13:03) dreadboy написал(а):
пардон, но там в примерах и так всё ясно.<br><br>ну держи:<br>
 
<?php
$ftp_server = "ftp.somedomain.zone"; //Сервер, к которому будет произведено подключение по 21 порту.
$ftp_user = "userlogin"; //Логин для входа на сервер.
$ftp_pass = "password"; //Пароль для входа на сервер, соответствующий логину.
 
//Подключаемся к серверу или умираем с ошибкой
$conn_id = ftp_connect($ftp_server) or die("Не удалось установить соединение с $ftp_server");	
 
// попытка входа
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
	echo "Произведен вход на $ftp_server под именем $ftp_user
";
} else {
	echo "Не удалось войти под именем $ftp_user
";
}
ftp_chdir($conn_id,"www"); //переходим в необходимую папку.
$files = ftp_nlist($conn_id,"/www"); //выводим её содержимое в массив.
$i=0;
foreach ($files as $key=>$file) {
	$file = substr($file,strrpos($file,"/")+1);
	if ($file != "." && $file != "..") {
		$i++;
		echo $i.". <a href="javascript:window.opener.document.forms[0].file.value='$file';close();">$file</a>
";
	}
}
 
// close the connection
ftp_close($conn_id);
?>
 

остальное за деньги.

Спустя 3 минуты, 37 секунд (31.10.2006 - 13:06) Gandjubas написал(а):
QUOTE(dreadboy)
остальное за деньги.

:lol:
ржу, немагу!

Спустя 12 минут, 38 секунд (31.10.2006 - 13:19) md5 написал(а):
dreadboy,
мне кажется тут люди говорят о написании ftp клиента, который будет иметь web интерфейс, чтобы юзер сам без труда вводить адрес, логин пароль, переходить по папкам, конечно же чтобы он не писал ftp_chdir($conn_id,"www"); чтобы перейти в папку ввв..

и твои понты выглядят не очень корректно..

Спустя 45 минут, 4 секунды (31.10.2006 - 14:04) dreadboy написал(а):
QUOTE(md5)
dreadboy,
мне кажется тут люди говорят о написании ftp клиента, который будет иметь web интерфейс, чтобы юзер сам без труда вводить адрес, логин пароль, переходить по папкам, конечно же чтобы он не писал  ftp_chdir($conn_id,"www"); чтобы перейти в папку ввв..

и твои понты выглядят не очень корректно..

пардон, а что мешает модернизировать данный код, для того чтобы юзер сам вводил логин, пасс и прочее?
даже чтоб юзер сам мог вводить сервер.
в данном примере очень хорошо показанно, как работать с фтп, средствами пхп.
а если php-программист не знает, как обрабатывать $_POST и $_GET массивы... ну это уже не в эту ветку ему надо.
повторюсь, я совершенно не вижу проблем, в написании обертки к этому скрипту, которая будет обрабатывать ссылки вида: myftpclient.zone/ftp.php?host=ftp.somehost.zone&user=user&login=login&path=path.

и уже потом делать коннект к $_GET['host'], с данными $_GET['user'] и $_GET['pass'], а затем делать по необходимости ftp_chdir($conn_id,$_GET['path']);

хотя в идеале хост, логин и пасс хранить в сессии ($_SESSION[]), а $_GET['path'] предворительно проверять на валидность... ну это в идеале.

з.ы. 2md5: а где тут понты?

Спустя 22 минуты, 20 секунд (31.10.2006 - 14:26) Gandjubas написал(а):
QUOTE(dreadboy)
а если php-программист не знает, как обрабатывать $_POST и $_GET массивы... ну это уже не в эту ветку ему надо.

Обёртка, как вы пожелали выразиться, - это не проблема!
Нам нужен был именно интерфейс и адекватность системы на нажатие той или иной кнопочки.
По поводу паролей и всех других данных - так это по умолчанию. Во всяком случаем мне это не надо потому, как у меня два пользователя: юзер и модер, и сервер один. Но для развития собственного напишем и этот модуль.
Мы уже скооперировались с патриком. :о)

Спустя 7 минут, 58 секунд (31.10.2006 - 14:34) zilogo написал(а):
Хм, я не совсем понимаю идею данного клиента. Предпологается, что человек будет с одного своего сайта переносить контент на другой ?

Спустя 4 минуты, 33 секунды (31.10.2006 - 14:39) dreadboy написал(а):
QUOTE(Gandjubas)
QUOTE(dreadboy)
а если php-программист не знает, как обрабатывать $_POST и $_GET массивы... ну это уже не в эту ветку ему надо.

Обёртка, как вы пожелали выразиться, - это не проблема!
Нам нужен был именно интерфейс и адекватность системы на нажатие той или иной кнопочки.
По поводу паролей и всех других данных - так это по умолчанию. Во всяком случаем мне это не надо потому, как у меня два пользователя: юзер и модер, и сервер один. Но для развития собственного напишем и этот модуль.
Мы уже скооперировались с патриком. :о)

хм... тогда темка-ка как-то не в той ветке по-моему...

Спустя 38 минут, 5 секунд (31.10.2006 - 15:17) Gandjubas написал(а):
QUOTE(zilogo)
Хм, я не совсем понимаю идею данного клиента. Предпологается, что человек будет с одного своего сайта переносить контент на другой ?

Я пишу для ftp-сервака. И контент я трогать не буду.
это для закачки, выкачки, переименования, модерирования и т.п. действий с фильмами, музыкой, софтом и т.д.

Спустя 1 час, 44 минуты, 58 секунд (31.10.2006 - 17:02) md5 написал(а):
QUOTE
з.ы. 2md5: а где тут понты?

QUOTE
о господи! господа!? у меня ушло 5 минут на ftp-клиент!
http://ru2.php.net/manual/ru/ref.ftp.php

и всё!

QUOTE
пардон, а что мешает модернизировать данный код, для того чтобы юзер сам вводил логин, пасс и прочее? даже чтоб юзер сам мог вводить сервер.

пардон, это не "5" минут..

Спустя 1 час, 52 минуты, 11 секунд (31.10.2006 - 18:54) Gandjubas написал(а):
QUOTE(md5)
пардон, это не "5" минут..

Господа! Мы все тут культурные люди! И без понтов. Просто иногда не понимаем и не принимаем ошибок, которые совершали сами когда-то!

Спустя 5 дней, 15 часов, 4 минуты, 45 секунд (7.11.2006 - 09:59) Gandjubas написал(а):
Господа, а можно ли с одного фтп-сервера закачать на другой? Чувтсвую, что можно, а как не понимаю. Не очень соображу. Читал мануал несколько раз - много думал :)
И ещё один проблем есть! Как со своего компа за которым сидишь закачать 700 и более метров? Юзать вэб-сервер не прокатит. Во всяком случае ПОСТОМ а тем более ГЕТОМ точно не пройдёт. а как другим способом - не пойму. Опытные пользователи, к вам обращаюсь.!!! Поможите!!!

Спустя 14 минут, 27 секунд (7.11.2006 - 10:13) dreadboy написал(а):
с фтп на фтп можно.
сча это и делаю :)
на одном серваке (с которого копировать) создаешь файлу с функциями коннекта и копирования.

с локальной машины:
убиваешь прокси, ставишь апач и пхп и запускаешь свой скрипт.

Спустя 4 минуты, 26 секунд (7.11.2006 - 10:18) dreadboy написал(а):

Спустя 1 час, 1 минута, 11 секунд (7.11.2006 - 11:19) zilogo написал(а):
QUOTE
Как со своего компа за которым сидишь закачать 700 и более метров?

? А почему FTP клиент не использовать (не на пхп) ?

Спустя 7 минут, 22 секунды (7.11.2006 - 11:26) Gandjubas написал(а):
QUOTE(dreadboy)
с фтп на фтп можно.
сча это и делаю :)
на одном серваке (с которого копировать) создаешь файлу с функциями коннекта и копирования.

с локальной машины:
убиваешь прокси, ставишь апач и пхп и запускаешь свой скрипт.

Первое понял как делать вроде. То есть сервер должен быть и вэб и фтп?
А про локалку. Каждому юзверю придётся ставить апач и пхп?
Иначе нельзя?
Или проще фтп-клиент обычный им юзать?

Спустя 4 минуты, 52 секунды (7.11.2006 - 11:31) Gandjubas написал(а):
QUOTE(zilogo)
QUOTE
Как со своего компа за которым сидишь закачать 700 и более метров?

? А почему FTP клиент не использовать (не на пхп) ?

Просто хотелось прикрутить фтп-сервер к форуму. Чтобы кинул файло и коммент сразу к ниму. Обсудить фильмец и тп (игры, софт)

Спустя 38 минут, 29 секунд (7.11.2006 - 12:10) dreadboy написал(а):
QUOTE(Gandjubas)
QUOTE(dreadboy)
с фтп на фтп можно.
сча это и делаю :)
на одном серваке (с которого копировать) создаешь файлу с функциями коннекта и копирования.

с локальной машины:
убиваешь прокси, ставишь апач и пхп и запускаешь свой скрипт.

Первое понял как делать вроде. То есть сервер должен быть и вэб и фтп?
А про локалку. Каждому юзверю придётся ставить апач и пхп?
Иначе нельзя?
Или проще фтп-клиент обычный им юзать?

да. обычный фтп.

Спустя 2 часа, 59 минут, 45 секунд (7.11.2006 - 15:09) Gandjubas написал(а):
а можно пример скачки одного на другой!?
просто код и как отследить скачалось или нет?
ещё такой нюанс интересует: есть время выполнения(и фтп команды и пхп процесса). Как бы уложиться в это время, ведь 700 и более метров за стандартные 90 секунд не сплавить!

Спустя 36 минут, 57 секунд (7.11.2006 - 15:46) dreadboy написал(а):
за 90 может успеть.
у меня за 30 - 353 метра зафигячил.
всё. а дальше надо отрубать safe_mode. иначе попа.

Спустя 16 минут, 47 секунд (7.11.2006 - 16:03) Gandjubas написал(а):
QUOTE(dreadboy)
всё. а дальше надо отрубать safe_mode. иначе попа.

почему попа?

и можно всё таки малнький примерчик. а то набор функций достаточно скудный, а какими пользоваться не знаю. заблокированная передача или нет :/

Спустя 37 минут, 34 секунды (7.11.2006 - 16:41) dreadboy написал(а):
ftp_put юзай.

Спустя 3 часа, 22 минуты, 19 секунд (7.11.2006 - 20:03) Patrick написал(а):
Вот и я вернулся...
Всё по теме, лично у меня проблема тока одна показ логальныйх папок... Через веб интерфейс, незнаю смжет ли это сделать JS.

Спустя 14 часов, 5 минут, 16 секунд (8.11.2006 - 10:08) Gandjubas написал(а):
QUOTE(Patrick)
Вот и я вернулся...
Всё по теме, лично у меня проблема тока одна показ логальныйх папок... Через веб интерфейс, незнаю смжет ли это сделать JS.

Он всё сможет.
По всему вышесказанному - возникла очень большая проблема! Как не юзаю фтп-клиент(обычный), залить 700 и более метров на фтп-сервер. Постом не пройдёт. а если и пройдёт. так во время слива все остальные пользователи будут сосать палец! Надо как-то решать эту проблему!

Спустя 2 часа, 32 минуты, 56 секунд (8.11.2006 - 12:41) Patrick написал(а):
Gandjubas, Постом мне кажётся пойдёт. Или я в чём то неправ? а из=за чнго пользователи будут сосать палец?

Спустя 14 минут, 53 секунды (8.11.2006 - 12:56) Gandjubas написал(а):
QUOTE(Patrick)
Gandjubas, Постом мне кажётся пойдёт. Или я в чём то неправ? а из=за чнго пользователи будут сосать палец?

Так ты сколько будешь заливать постом?
во-первых, есть такая директива max_upload_files, max_post_size, max_mail_size - и как ты их обойдёшь? там максимум 8 метров
а сосать палец бедет потому, что вэб сервер настроен на высокий приоритет процессов. и он пока будет загружать файл, все остальные процессы, или приостановятся или будут идти еле-еле!

Спустя 32 минуты, 34 секунды (8.11.2006 - 13:29) Patrick написал(а):
Gandjubas,Блин кисляк. На ум приходят тока cредства JS. Но вот как тока вопросик?

Спустя 3 минуты, 42 секунды (8.11.2006 - 13:32) Gandjubas написал(а):
QUOTE(Patrick)
Gandjubas,Блин кисляк. На ум приходят тока cредства JS. Но  вот  как тока вопросик?

по этому поводу я завёл здесь вторую тему. называется отправка файла через 21 порт

Спустя 2 месяца, 11 дней, 1 час, 22 минуты, 43 секунды (19.01.2007 - 14:55) Gandjubas написал(а):
Люди!
А возможно ли средствами PHP загрузить на сервер с локальной машины большой файл (размер больше max_upload_filesize или как-то так)?
Какими-нибудь функциями FTP!
Меня заставили задуматься и тем самым смутили!!!

Спустя 4 минуты, 55 секунд (19.01.2007 - 15:00) md5 написал(а):
Gandjubas,
подними на локале ftp сервер, попробуй

Спустя 24 минуты, 38 секунд (19.01.2007 - 15:25) Gandjubas написал(а):
md5,
нет. Мне необходимо без установки чего-либо на локальной машине. Только браузер (можно только к какому-то привязаться, но это для PHP без разницы)

Спустя 37 минут, 37 секунд (19.01.2007 - 16:02) md5 написал(а):
нет

Спустя 1 час, 18 минут, 16 секунд (19.01.2007 - 17:20) levis написал(а):
Или я непонимаю ситуацию или....
QUOTE
А возможно ли средствами PHP загрузить на сервер с локальной машины большой файл

Можа разбить файл на части и потом склеить?

Спустя 1 час, 35 минут, 3 секунды (19.01.2007 - 18:55) Patrick написал(а):
levis, ситуация именно такая. Разбить файл этак 600 метров!

Спустя 5 часов, 40 минут, 17 секунд (20.01.2007 - 00:36) levis написал(а):
траблы вашей увы подробностях не знаю,но ребята вы смышленные сумеете построить код под себя <br><br><b>эта разбивка---все работает проверил</b><br><br>
$fn="file.rar";//имя файла
$damage="10000";//размер частей
$open=fopen($fn,"r");
$read=fread($open,filesize($fn));
fclose($open);
$c=(int)filesize($fn)/$damage;
if((float)(filesize($fn)/$damage)-$c !=0)$count++;
for($i=0;$i<$c;++$i)
{
$index=substr($read,$i*$damage,$damage);
$fp=fopen("file.mob".$i,"w");
fwrite($fp,$index);
}




----это склейка-тоже проверил работает
$read="";
 
for($i=0;$i < 100000;++$i)
{
$fn="file.mob".$i;
if(file_exists($fn))
{
$fp=fopen($fn,"r");
$read.=fread($fp,filesize($fn));
fclose($fp);
}
else {break;}
$fp=fopen("end.rar","w");
fwrite($fp,$read);
}


Если по коду че непонятно спрашиваем!:)

Спустя 1 час, 25 минут, 37 секунд (20.01.2007 - 02:01) Patrick написал(а):
levis, а вы из браузера на сервак, залейте! Проблема заключается как из браузера заливать файлы большого объёма! На серваке то просто...

Спустя 7 часов, 24 минуты, 23 секунды (20.01.2007 - 09:26) levis написал(а):
а для чего по вашему этот скрипт

Спустя 3 часа, 11 минут, 34 секунды (20.01.2007 - 12:37) Patrick написал(а):
levis, Ты помоему не помимаешь суть, вопроса! На серваке с файлами делать ничего не надо. Надо залить их туда причём POST`ом! Попробуй залить POST`ом файл размером 50м! Хотя бы!

Спустя 1 день, 5 часов, 36 минут, 2 секунды (21.01.2007 - 18:13) Первак написал(а):
А с помощью php можно зайти на любой ftp сервер?<br>У меня на народе сайт, а с h10.ru зайти не получается:<br><br>
ftp_server="ftp.narod.ru";
$ftp_user_name="xxxxxxxx";
$ftp_user_pass="xxxxxxxxxx";
 
// установка соединения
$conn_id = ftp_connect($ftp_server);
if($conn_id)
{
echo"Fuck you!!!";
}
else
{
echo"I love you";
}
 
// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
// проверка соединения
if ((!$conn_id) || (!$login_result)) { 
       echo "Не удалось установить соединение с FTP сервером!";
       echo "Попытка подключения к серверу $ftp_server под именем $ftp_user_name!";
       exit; 
   } else {
       echo "Установлено соединение с FTP сервером $ftp_server под именем $ftp_user_name";
   }
 
// чтение каталога
 $dir = opendir ('.');
  echo 'Files:
';
  while ($file = readdir ($dir)) 
  {
    echo"$file
";
  }
  closedir ($dir);
 
ftp_quit($conn_id); 
 

Спустя 3 минуты, 7 секунд (21.01.2007 - 18:16) Patrick написал(а):
Первак,Можно а разве на народе FTP даётся?

Спустя 2 минуты, 26 секунд (21.01.2007 - 18:19) Первак написал(а):
Patrick, да:) конечно.
Но у меня не получается чёто.

Спустя 2 минуты, 29 секунд (21.01.2007 - 18:21) Первак написал(а):
Patrick, не сам ftp хостинг, а доступ по ftp.

Спустя 9 секунд (21.01.2007 - 18:22) Patrick написал(а):
<b>Первак</b>,<br> $dir = opendir ('.') - а это что за порнография???? Для начало надо ман, почитать, а потом писать...<br>
<?php
 
// установка соединения
$conn_id = ftp_connect($ftp_server); 
 
// вход с именем пользователя и паролем
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
 
// проверка соединения
if ((!$conn_id) || (!$login_result)) {
    die("Не удалось подключиться к FTP серверу!");
}
 
echo "Текущая директория: " . ftp_pwd($conn_id) . "
";
 
// попытка сделать somedir текущей
if (ftp_chdir($conn_id, "somedir")) {
    echo "Новая текущая директория: " . ftp_pwd($conn_id) . "
";
} else { 
    echo "Не удалось сменить директорию
";
}
 
// закрытие соединения
ftp_close($conn_id);
?>


И вот тебе примерчик...

Спустя 4 минуты, 26 секунд (21.01.2007 - 18:26) Первак написал(а):
тоже самое
Warning: ftp_login() expects parameter 1 to be resource, boolean given in /home/w/webstarphp.h10.ru/WWW/test1.php on line 14
Не удалось подключиться к FTP серверу!

Спустя 1 час, 23 минуты, 7 секунд (21.01.2007 - 19:49) Patrick написал(а):

Спустя 3 часа, 59 минут, 49 секунд (21.01.2007 - 23:49) Первак написал(а):
Да я уже все мануалы прочитал - ничё не получается, уже пароль, логин и сервер проверил - нефига.
По тем же паролям через фтп менеджер конектится, а через пхп не хочит.
Может на народе какаято защита стоит?

Спустя 13 минут, 3 секунды (22.01.2007 - 00:02) Patrick написал(а):
Первак, Защита врядли, а есть поддержка ftp в твоей сборке php ?

Спустя 5 минут, 37 секунд (22.01.2007 - 00:08) Первак написал(а):
holm.ru - написано
QUOTE
FTP доступ к вашему виртуальному серверу

Спустя 7 минут, 8 секунд (22.01.2007 - 00:15) Patrick написал(а):
<b>Первак</b>, Причём тут holm.ru создаёшь файл phponfo.php там пишешь
 <?php phpinfo();?>
и ищещь строчку FTP support enabled... + к тому же поддержку ftp насколько я помню там надо включать через админку...

Спустя 21 минута, 1 секунда (22.01.2007 - 00:36) Первак написал(а):
Написал - выдало мне всю инфу про пхп - и чё найти теперь надо?

Спустя 1 минута, 35 секунд (22.01.2007 - 00:37) Первак написал(а):
FTP support - enabled - типа поддержуется

Спустя 7 месяцев, 27 дней, 11 часов, 55 минут, 40 секунд (19.09.2007 - 11:33) _555 написал(а):
доброго времени суток!!!
помогите пожалуйста пеерделать скрипт... в данный момент он копирует папки со влажением с фтп на другой фтп. задача зделать чтобы можно было им качать просто файлы указывая адрес файла на сервере smile.gif вот исходный вариант:
<?php

function getchmod($perm)
{
$chmod = 0;
if($perm[0] == "r") $chmod = $chmod+0400;
if($perm[1] == "w") $chmod = $chmod+0200;
if($perm[2] == "x") $chmod = $chmod+0100;
if($perm[3] == "r") $chmod = $chmod+0040;
if($perm[4] == "w") $chmod = $chmod+0020;
if($perm[5] == "x") $chmod = $chmod+0010;
if($perm[6] == "r") $chmod = $chmod+0004;
if($perm[7] == "w") $chmod = $chmod+0002;
if($perm[8] == "x") $chmod = $chmod+0001;
return $chmod;
}

function copy_dir($ftp_from,$ftp_to,$dir_from,$dir_to,$perm,$lev)
{
echo str_repeat("|",$lev-1)."-Создание <b>$dir_to</b>..."; flush();
$no_errors = true;
$dir_list_to = explode("/",$dir_to);
foreach($dir_list_to as $dir)
{ $dir_exist = false;
$dir_list = ftp_rawlist($ftp_to,".");
foreach($dir_list as $file)
if($file[0] == "d" && substr($file,strrpos($file," ")+1) == $dir)
{ $dir_exist = true;
break;
}
if($dir_exist) $no_errors = ($no_errors &&
ftp_site($ftp_to,"chmod 0777 $dir") &&
ftp_chdir($ftp_to,$dir));
else $no_errors = ($no_errors &&
is_string(ftp_mkdir($ftp_to,$dir)) &&
ftp_site($ftp_to,"chmod 0777 $dir") &&
ftp_chdir($ftp_to,$dir));
}
if($no_errors) echo" OK<br>";
else echo"<b> Error!</b><br>";
flush();

if(ftp_chdir($ftp_from,$dir_from))
echo str_repeat("|",$lev-1)."-Переход в <b>$dir_to</b><br>";
else echo str_repeat("|",$lev-1)."-<b>Error:</b> Ошибка перехода в <b>$dir_to</b><br>";
flush();

echo str_repeat("|",$lev)."-Чтение содержимого <b>$dir_from</b><br>";
flush();

$dir_list = ftp_rawlist($ftp_from,".");

foreach($dir_list as $file)
if($file[0] == "-")
{ $fperm = substr($file,1,9);
$fname = substr($file,strrpos($file," ")+1);
$chmod = getchmod($fperm);

echo str_repeat("|",$lev)."--Копирование файла <b>$fname</b>..."; flush();
if((@ftp_get($ftp_from,"tf.jpg",$fname,FTP_BINARY) ||
@ftp_get($ftp_from,"tf.jpg",$fname,FTP_ASCII)) &&
(@ftp_put($ftp_to,$fname,"tf.jpg",FTP_BINARY) ||
@ftp_put($ftp_to,$fname,"tf.jpg",FTP_ASCII)) &&
ftp_site($ftp_to,"chmod ".base_convert($chmod,10,8)." $fname") &&
unlink("tf.jpg")) echo" OK<br>";
else echo"<b> Error!</b><br>";
}

foreach($dir_list as $file)
if($file[0] == "d")
{ set_time_limit(600);
$fperm = substr($file,1,9);
$fname = substr($file,strrpos($file," ")+1);

if($fname <> "." && $fname <> "..")
{ echo str_repeat("|",$lev)."-Копирование дирректории <b>$fname</b>...<br>"; flush();
copy_dir($ftp_from,$ftp_to,$fname,$fname,$fperm,$lev+1);
}
}

echo str_repeat("|",$lev)."-Переход <b>наверх</b>..."; flush();
for($j = 0; $j <= substr_count($dir_to,"/"); $j++)
ftp_cdup($ftp_to);
if(ftp_cdup($ftp_from)) echo" OK<br>";
else echo"<b> Error!</b><br>";
flush();

$chmod = getchmod($perm);
if(ftp_site($ftp_to,"chmod ".base_convert($chmod,10,8)." ".$dir_to))
echo str_repeat("|",$lev)."-На <b>$dir_to</b> установлен chmod(0".base_convert($chmod,10,8).")<br>";
else echo str_repeat("|",$lev)."-<b>Error:</b> Ошибка установки chmod(0".base_convert($chmod,10,8).") на <b>$dir_to</b><br>";
flush();
}

if(empty($_POST)) {?>
<html>

<head>
<title></title>

&lt;script language='JavaScript'>
var kop_on = new Image(); kop_on.src = 'kop_on.jpg';
var kop_off = new Image(); kop_off.src = 'kop_off.jpg';
</script>

&lt;script language='JavaScript'>
function procform()
{ var f = document.forms['cform'];

var rexp = /^[a-z_\d\-\.]{8,64}$/;
f.host_from.value = f.host_from.value.toLowerCase();
if (!rexp.test(f.host_from.value))
{ alert('Недопустимый FTP-сервер FROM');
return false;
}
f.host_to.value = f.host_to.value.toLowerCase();
if (!rexp.test(f.host_to.value))
{ alert('Недопустимый FTP-сервер TO');
return false;
}

rexp = /^[a-z_\d\-@!.]{1,32}$/;
f.user_from.value = f.user_from.value.toLowerCase();
if (!rexp.test(f.user_from.value))
{ alert('Недопустимый логин FROM');
return false;
}
f.user_to.value = f.user_to.value.toLowerCase();
if (!rexp.test(f.user_to.value))
{ alert('Недопустимый логин TO');
return false;
}

rexp = /^[a-zA-Z0-9@.]{4,32}$/;
if (!rexp.test(f.pass_from.value))
{ alert('Недопустимый пароль FROM');
return false;
}
if (!rexp.test(f.pass_to.value))
{ alert('Недопустимый пароль TO');
return false;
}

f.action = 'index.php';
return true;
}
</script>
</head>

<body bgcolor=#C4E1E1>

<form name="cform" action="index.php" method="post" onSubmit="return procform();">
<table width=80% align=center>
<tr>
<td width=50% align=center> FTP-адрес:
<input name="host_from" type="text" value="сервер с">
<br>
Логин: <input name="user_from" type="text" value="логин">
<br>
Пароль: <input name="pass_from" type="password" value="пароль">
<br><br>
c <br>
<textarea name="dir_list_from" rows=5 cols=50 wrap="off">путь фала на сервере</textarea>
</td>
<td align=center> FTP-адрес:
<input name="host_to" type="text" value="сервер в">
<br>
Логин: <input name="user_to" type="text" value="логин">
<br>
Пароль: <input name="pass_to" type="password" value="пароль">
<br><br>
n<br>
<textarea name="dir_list_to" rows=5 cols=50 wrap="off">путь куда ложить</textarea>
</td>
</tr>
</table>
<br>
<div align="center">
<input type=image src="kop_off.jpg" width=184 height=27 border=0 onMouseOver="this.src=kop_on.src" onMouseOut="this.src=kop_off.src" alt="КОПИРОВАТЬ">
</div>
</form>
</body>

</html>
<?php }else{
set_time_limit(5000);
$host_from = $_POST["host_from"];
$ip_from = @gethostbyname($host_from);
if($ip_from == $host_from) exit("Сервер <b>$host_from</b> НЕ найден.");
else
{ echo"Соединение с <b>$host_from</b> ($ip_from)..."; flush();
$ftp_handle_from = @ftp_connect($ip_from);
if (!$ftp_handle_from) exit(" Ошибка соединения!");
else echo" Соединение установлено.<br>";
echo"Авторизация <b>$host_from</b>..."; flush();
$user_from = $_POST["user_from"];
$pass_from = $_POST["pass_from"];
if(!@ftp_login($ftp_handle_from,$user_from,$pass_from)) { echo" Авторизация не удалась<br>";
echo"Выход <b>$host_from</b>..."; flush();
@ftp_quit($ftp_handle_from);
exit(" Соединение закрыто."); flush();
}
else echo" ОK!<br>"; flush();
}

$host_to = $_POST["host_to"];
$ip_to = @gethostbyname($host_to);
if($ip_to == $host_to) { echo"Сервер <b>$host_to</b> НЕ найден.<br>";
echo"Выход <b>$host_from</b>..."; flush();
@ftp_quit($ftp_handle_from);
exit(" Соединение закрыто."); flush();
}
else
{ echo"Соединение с <b>$host_to</b> ($ip_to)..."; flush();
$ftp_handle_to = @ftp_connect($ip_to);
if (!$ftp_handle_to) { echo" Ошибка соединения!<br>";
echo"Выход <b>$host_from</b>..."; flush();
@ftp_quit($ftp_handle_from);
exit(" Соединение закрыто."); flush();
}
else echo" Соединение установлено.<br>";
echo"Авторизация <b>$host_to</b>..."; flush();
$user_to = $_POST["user_to"];
$pass_to = $_POST["pass_to"];
if(!@ftp_login($ftp_handle_to,$user_to,$pass_to)) { echo" Авторизация не удалась<br>";
echo"Выход <b>$host_to</b>..."; flush();
@ftp_quit($ftp_handle_to);
echo" Соединение закрыто.<br>"; flush();
echo"Выход <b>$host_from</b>..."; flush();
@ftp_quit($ftp_handle_from);
exit(" Соединение закрыто."); flush();
}
else echo" ОK!<br>"; flush();
}

$dir_list_from = str_replace("\r\n","\n",$_POST["dir_list_from"]);
$dir_list_to = str_replace("\r\n","\n",$_POST["dir_list_to"]);

$dir_list_from = explode("\n",$dir_list_from);
$dir_list_to = explode("\n",$dir_list_to);

while(($dir_list_from[0] == "") && (sizeof($dir_list_from) > 1)) array_shift($dir_list_from);
while(($dir_list_to[0] == "") && (sizeof($dir_list_to) > 1)) array_shift($dir_list_to);

while($key = array_search("",$dir_list_from)) { unset($dir_list_from[$key]);
$dir_list_from = array_values($dir_list_from);
}
while($key = array_search("",$dir_list_to)) { unset($dir_list_to[$key]);
$dir_list_to = array_values($dir_list_to);
}
if($dir_list_from[0] == "")
echo"<b>Список дирректорий ОТ не должен быть пустым!</b><br>";
elseif($dir_list_to[0] == "")
echo"<b>Список дирректорий В не должен быть пустым!</b><br>";
elseif(($dir_co = sizeof($dir_list_from)) != sizeof($dir_list_to))
echo"<b>Количество дирректорий ОТ и дирректорий В должно быть одинаковым!</b><br>";
else
{ echo"<font face=\"Courier\">";
for($i = 0; $i < $dir_co; $i++)
{ $dir_list_from[$i] = str_replace("\\","/",$dir_list_from[$i]);
$dir_list_from[$i] = str_replace("//","/",$dir_list_from[$i]);
if($dir_list_from[$i][0] == "/") $dir_list_from[$i] = substr($dir_list_from[$i],1);
if($pos = strrpos($dir_list_from[$i],"/"))
{ $up_dir_from = substr($dir_list_from[$i],0,$pos);
$copy_dir_from = substr($dir_list_from[$i],$pos+1);
}
else
{ $up_dir_from = "";
$copy_dir_from = $dir_list_from[$i];
}
if($up_dir_from)
{ echo"Переход в ".$up_dir_from."..."; flush();
if(@ftp_chdir($ftp_handle_from,$up_dir_from))
echo" OK<br>";
else echo"<b> Error!</b><br>";
}
$dir_list = @ftp_rawlist($ftp_handle_from,".");
$perm = "";
foreach($dir_list as $file)
if($file[0] == "d" && substr($file,strrpos($file," ")+1) == $copy_dir_from)
{ $perm = substr($file,1,9);
break;
}
if(!$perm) { echo"Дирректория <b>".$dir_list_from[$i]."</b> не найдена!<br>"; flush(); }
else
{ echo"Копирование дирректории <b>".$dir_list_from[$i]."</b> в <b>".$dir_list_to[$i]."</b>...<br>"; flush();
copy_dir($ftp_handle_from,$ftp_handle_to,$copy_dir_from,$dir_list_to[$i],$perm,1);
}
for($j = 0; $j <= substr_count($up_dir_from,"/"); $j++)
@ftp_cdup($ftp_handle_from);
}
echo"</font>";
}

echo"Выход <b>$host_to</b>..."; flush();
@ftp_quit($ftp_handle_to);
echo" Соединение закрыто.<br>"; flush();

echo"Выход <b>$host_from</b>..."; flush();
@ftp_quit($ftp_handle_from);
echo" Соединение закрыто."; flush();

}?>


буду очень признателен за помощь...


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.