fopen запить на ФТП и локалку

micr0b

Новичок
fopen запить на ФТП и локалку

Здрасти. Пришлось написать скрипт, но проблема возникла в неожыданом месте.

Как правильно сформулировать пхп код чтоб даные который он обробляет сохранялись или на локалке или на другом фтп(если фтп, притом зная пароль и логин).

Меня интересует имено сохранение сразу. а не сначала на сервер где есть скрипт, а потом аж дальше.

Можно ето както реализировать через fopen.?
fopen - я делал так:
1.
PHP:
fopen("D:\\i\\ftp.txt", "a+")
и так делал,
PHP:
fopen("D:\\i\ftp.txt", "a+")
результату недало.
2.
PHP:
<?php  $fp=fopen("ftp://login:/[email protected]/i/ftp.txt", "a+");   fwrite ($fp, "YES");  fclose ($fp);  ?>  // i - права 777
результату недало.

или иначе.?
Где ошыбка, подскажыте или ищо лутше навидите пример..буду безумно рад, и благодарен.
 

micr0b

Новичок
Поймите правильно припустим идьот генерацыя или читание даных, но мне нужно чтоб даные не сохранялись на сервере где выполняеца скрипт, а на локал или другом фтп зная логин и пароль, етого другого фтп.
во как...я и по мануелам искал и все такое .. но немогу найти функцыю которая бы делала ето =\
Извиняюсь если неправ в том что ненашол в мануеле .=\
 

micr0b

Новичок
PHP:
<?
$fp=fopen("asd.txt", "a+"); 
$input=@file_get_contents("http://siteblablabla.ru/img/");
fwrite ($fp, $input);
fclose ($fp);
// fopen функцыя с параментром a+ должна сохранить даные или на локалке или на другом фтп
?>
 

Фанат

oncle terrible
Команда форума
я думаю, он имеет в виду, что в ftp_put нельзя передать строку
а "локалка" для него - это домашний комп.
порнуху качает.
 

micr0b

Новичок
Локалка ето есть локалка, не для порнухи код, а темболие мой пк.
Я не озабоченый чтоб таким занимаца. Извините за выражение.. Но я нелюблю когда меня бездоказательства винят.

-~{}~ 14.01.08 20:40:

Разве так сформулированый код будет записыватать содержание страницы http://siteblablabla.ru/img/ , на другой сайт c правами.?
если да, то какой путь нужно указать для тхт файла в который должены сохраница даные.?
просто "news.txt" или "/home/site/public_html/news.txt"
PHP:
<?php
$input=@file_get_contents("http://siteblablabla.ru/img/");

$conn_id = ftp_connect("ftp.site.org");
$login_result = ftp_login($conn_id, "sitelogin", "pass");

if (ftp_fput($conn_id, "news.txt", $input, FTP_ASCII)) {
    echo "Загружен файл\n";
} else {
    echo "Проблема закачивания \n";
}
ftp_close($conn_id);
?>
-~{}~ 14.01.08 20:55:

Warning: ftp_fput() expects parameter 3 to be resource, string given in /home/site2/public_html/1.php on line 7
как правильно сформулировать.?=\
 

Фанат

oncle terrible
Команда форума
никак. $input ты этой функцией не зальёшь. только в файл сохранять
 

micr0b

Новичок
ну видиш я и о етом говорю что мне нужно сохранить .=\
если не тяжыло сформулируйте код. Буду дезумно рад и благодарен.

-~{}~ 15.01.08 13:50:

Дайте пожалуста ответ .=\
 

FractalizeR

Новичок
Автор оригинала: micr0b
ну видиш я и о етом говорю что мне нужно сохранить .=\
если не тяжыло сформулируйте код. Буду дезумно рад и благодарен.

-~{}~ 15.01.08 13:50:

Дайте пожалуста ответ .=\
PHP:
<?php
$input=file_get_contents("http://siteblablabla.ru/img/");
$myTempFile = tempnam("/tmp", "Bred");
file_put_contents($myTempFile, $input);

$conn_id = ftp_connect("ftp.site.org");
$login_result = ftp_login($conn_id, "sitelogin", "pass");

if (ftp_fput($conn_id, "news.txt", $myTempFile, FTP_ASCII)) {
    echo "Загружен файл\n";
} else {
    echo "Проблема закачивания \n";
}
unlink($myTempFile);
ftp_close($conn_id);
?>
Нужно только проверки на ошибки вставить.
 

micr0b

Новичок
путь к news.txt такойже оставит или он доллжен быть типа /"home/site/public_html/news.txt"
 

Фанат

oncle terrible
Команда форума
FractalizeR
как всегда, ты невнимательно читаешь вопрос.
 

FractalizeR

Новичок
Вы правы... Попробую исправиться:

PHP:
<?php
$fhandle = fopen("http://ya.ru", "r");

echo "Connecting...";
$conn_id = ftp_connect("XXXXXX");

echo "Logging in...";
$login_result = ftp_login($conn_id, "test", "test");

echo "Changing mode to passive (I am behind firewall)...";
ftp_pasv($conn_id, true);

echo "Uploading file...";
if (ftp_fput($conn_id, "news.txt", $fhandle, FTP_ASCII)) {
    echo "Загружен файл\n";
} else {
    echo "Проблема закачивания \n";
}
echo 'Cleaning...';
ftp_close($conn_id);
fclose($fhandle);
?>
Проверил, работает. Сохранения на локальный диск нет (хоть я и не совсем понимаю, зачем такое требование автор поставил)
 

FractalizeR

Новичок
Passive mode надо еще активировать :) Впрочем, на сервере автора это может быть и не нужно. Хотя потоки имеют некоторые ограничения по работе с FTP, но решение красивое :)
 

Фанат

oncle terrible
Команда форума
Затем, что у него провайдер-дурак.
траф снаружи дорогой, внутри - бесплатно. плюс - домстраничка для юзеров, причем траф самой странички юзеру не засчитывается. размер у нее маленький.
в /tmp могло бы и проканать, кстати
 

kode

never knows best
Просто такой путь, более надёжный, потому-что __мб__ PHP собран без --enable-ftp, хотя да - пассивный режим тоже мб проблемой.
 

FractalizeR

Новичок
Поправка: похоже, что FTP Wrapper для потоков всегда работает в пассивном режиме: "If the server does not support passive mode ftp, the connection will fail"

потому-что __мб__ PHP собран без --enable-ftp
Я думаю, в этом случае FTP wrapper тоже будет недоступен.
 

micr0b

Новичок
FractalizeR>>

Connecting...Logging in...
Warning: ftp_login() [function.ftp-login]: Login authentication failed in /home/site/public_html/file.php on line 8
Changing mode to passive (I am behind firewall)...Uploading file...
Warning: ftp_fput() [function.ftp-fput]: You aren't logged in in /home/site/public_html/file.php on line 14
Проблема закачивания Cleaning...

=\ не работает
 
Сверху