Изменение удаленного файла через FTP соединение

Toxic_Cat

Новичок
Изменение удаленного файла через FTP соединение

Есть хост, на хосте есть файл index.html
Есть настройки FTP (хост, имя, пароль)

Зачада:
Сделать Web-форму, позволяющую редактировать удаленно этот файл.

Я сразу решил, что задача легкая, естественно с FTP до этого никогда не работал (хочу это исправить).

Как это делается:
- Открывается FTP
- Читается содержимое файла в форму
- Редактируется
- Жмется кнопка «Сохранить»
- Данные передаются скрипту
- Открывается FTP
- Файл открывается, очищается и в него записывается содержимое (либо файл удаляется и создается новый с измененным содержимым)

PHP:
<?php
$host=”host.ru”;
$name=”login”;
$pass=”pass”;

$con=ftp_connect($host);
$fl=ftp_login($con, $name, $pass);
?>
И на этом все… Я просто не знаю как получить содержимое файла. У меня есть дескриптор $fl, может его можно как-то использовать?

Направьте пожалуйста на правильный путь. Может я неправильно поставил задачу? Может это вообще невыполнимо!?
 

Develar

Новичок
RTFM. Также как на локальном сервере, только в качестве протокола указываем не file:// а ftp://
 

Toxic_Cat

Новичок
Автор оригинала: Develar
RTFM. Также как на локальном сервере, только в качестве протокола указываем не file:// а ftp://
Списбо, твой пост мне не сказал ничего нового.

В общем я незная как это решить пошел единственным путем.

index.php
PHP:
<html>
<head>
<title></title>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-16">
</head>
<body>
<h1>Скрипт</h1>
<?php
include('config/config.php');

$temp_file='/home/test.loc/www/temp.txt';

$count=count($host);
for($i=0; $i<$count; $i++)
{
$conn=ftp_connect($host[$i]);
$login=ftp_login($conn, $user[$i], $pass[$i]);

$fp=fopen($temp_file, 'w+');
ftp_get($conn, $temp_file, $file[$i], FTP_BINARY);

$content=file_get_contents($temp_file);
?>
<form action="to_save.php" method="post">
<input type="hidden" name="id" value="">
<textarea name="content" style="width: 100%; height: 200px;"><?=htmlentities($content)?></textarea><br/>
<input type="submit" name="submit" value=" сохранить изменения ">
</form>
<?php
flush();
}
?>
</body>
</html>
config.php
PHP:
<?php
#########################
$host[]='host';
$user[]='111';
$pass[]='222';
$file[]='/www/index.php';
#########################
$host[]='host';
$user[]='111';
$pass[]='222';
$file[]='/htdocs/index.php';
#########################
$host[]='host';
$user[]='111';
$pass[]='222';
$file[]='/www/index.php';
#########################
?>
Вот так я это сейчас реализую, пока только одна проблема, с кодировкой выводимого текста из file_get_contents(), iconv знаю, но я не уверен что он будет включен на всех хостингах.

-~{}~ 02.03.06 09:47:

Подскажите, что делать с кодировкой? Почему просто сохраненный русский текст в текстовый файл нормально выводится, я именно контент, скачанный с FTP по корявому?
 

Фанат

oncle terrible
Команда форума
Списбо, твой пост мне не сказал ничего нового.
естественно.
Новое тебе должен был подсказать МАНУАЛ, ГДЕ ВСЁ НАПИСАНО.
с кодировкой выводимого текста из file_get_contents(),
как узнал что проблема?
 

Toxic_Cat

Новичок
Автор оригинала: Фанат
естественно.
Новое тебе должен был подсказать МАНУАЛ, ГДЕ ВСЁ НАПИСАНО.

как узнал что проблема?
Создал на хосте тестовый файл index.php, в него записал:
"Русский
English"

При запуске скрипта вывод:
"&#208;&#243;&#241;&#241;&#234;&#232;&#233;

English"

При сохранении этих каракуль весь текст преобразуется в спец. символы (это естественно)

Следующий раз выводится (и все последующие разы):
PHP:
&#208;&#243;&#241;&#241;&#234;&#232;&#233;

English
Тут явно кодировка.
 

Фанат

oncle terrible
Команда форума
ага
а при чём тут твои рыдания с ftp?

-~{}~ 02.03.06 11:10:

Следующий раз выводится (и все последующие разы):
&#208;&#243;&#241;&#241;&#234;&#232;&#233;
удивительно, правда?
а, главное - ну совсем непонятно - откуда такое берётся!
загадка просто!
 

Toxic_Cat

Новичок
Автор оригинала: Фанат
ага
а при чём тут твои рыдания с ftp?

-~{}~ 02.03.06 11:10:


удивительно, правда?
а, главное - ну совсем непонятно - откуда такое берётся!
загадка просто!
Спец. символы естественно я знаю откуда берутся, из кодовой таблицы.

Не хотел тему новую открывать, но вопрос по одному и тому-же скрипту. Что делать в данной ситуации? Я не понимаю почему текст, сохраненный посредством PHP в text.txt там странно читается.

Могу предположить, но лучше помолчу :)
 

Toxic_Cat

Новичок
Автор оригинала: Фанат
НЕ ПЕРЕВЕОДИТЬ РУССКИЕ БУКВЫ В СПЕЦСИМВОЛЫ!!!!
Спасибо,
PHP:
htmlentities($content)
Сам бы никогда не додумался.

Благодарю, на это у меня ушло 2-3 часа... = я потратил на эту ошибку 30-45 рублей...
 
Сверху