Reply to this topicStart new topicStart Poll

Очень занятный скрипт написаный на PHP "Удаленный"

, скрипт "Удаленный редактор"
Домофонщик
Отправлено: Dec 3 2007, 02:28 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 244
Пользователь №: 1099
Регистрация:
22-August 07



Удаленный редактор

Сегодня мы напишем интересную и очень полезную программу для вашего сайта. Хотя посетители и не смогут оценить ее, но то, что она упростит жизнь вам, это точно :-).
Реализация примера, конечно же, будет на PHP. Итак, открывайте свой любимый редактор и начнем кодить.

Все будет сделано просто и, как говорится, для себя :-). Выведем строку для ввода адреса к файлу на сервере и кнопки с обозначениями, которые будут одновременно сообщать, что с этим файлом можно сделать. Наша цель — предоставить возможность чтения, редактирования, запуска и удаления указанного файла. В режиме редактирования мы также будем иметь возможность сохранить промежуточный результат, а заодно сделаем кнопку «Сохранить как…», чтобы можно было создать резервную копию. Резервные копии часто требуются при написании нового кода или внесении хоть каких-то существенных изменений в уже работающий код. Это избавляет от возможных проблем и головной боли :-).

Весь скрипт представляет из себя один сценарий с именем editor.php. Редактирование файлов будет производиться относительно этого сценария, так что желательно для удобства поместить его в корень сайта. Иначе каталог, в который он будет помещен, будет считаться корневым.

Код может показаться немного сложным для неподготовленных, чтобы все было ясно, будем разбирать его частями. Итак, начнем заполнять скрипт кодом:

QUOTE

<?php
//проверка на введенный адрес
if(!empty($_GET['adress']))
{
  $adress = $_GET['adress'];

//если передан параметр запуска файла
if (!empty($_GET['exec']))
//переходим на выполнение указанного файла
  Header('Location:'.$adress);

}
//устанавливаем пустой адрес
else $adress = '';

echo "<form action=editor.php method=GET>
//ввод адреса файла на сервере
Адрес:<input type=text name=adress value=".$adress."><p>";
//доступные функции для работы с файлом
  echo '<input type=submit value=Прочитать name=read>';
  echo '<input type=submit value=Редактировать name=write>';
  echo '<input type=submit value=Запустить name=exec>';
  echo '<input type=submit value=Удалить name=delete></form><br>';


Итак, первые действия — это загрузка нашей постоянной формы, которая представляет из себя строку для ввода адреса файла, над которым мы будем работать, и кнопки с выполнением операций чтения, редактирования, запуска и удаления. Обработку нажатия на эти кнопки мы будем реализовывать далее. Единственное, что пришлось сделать заранее — это обработать функцию запуска указанного файла, так как после любого вывода в браузер мы уже не можем никак изменить Header, который требуется нам для переадресации на указанный адрес.

Наш скрипт должен отслеживать, на какую клавишу было осуществлено нажатие, и выполнять соответствующие действия с указанным в строке адреса файлом. Потому пишем такой код:
QUOTE

//если введен адрес
if ($adress != '')
{
//проверка на существование указанного файла
if (!file_exists($adress))
echo '<p><b>Файла <font color=red>'.$adress.'</font> не существует!!!</b>';
//если указанный файл существует
else{
//если выбрана функция удаления файла
if (!empty($_GET['delete']))
{
unlink($adress); //удаляем файл с сервера
if (!file_exists($adress)) //если файла уже не существует
echo 'Файл <b>'.$adress.'</b> был удален из сервера!'; //сообщаем об успешном удалении
else 'Не удалось удалить файл '.$adress.' из сервера'; //иначе пишем, что удалить файл не удалось
}




Итак, мы обработали одно из возможных действий — удаление файла. Но прежде чем что-либо делать с файлом или проверять действие, которое выбрали на выполнение, мы проводим проверку на наличие файла, с которым собираемся далее работать. Если окажется, что файл отсутствует на сервере, то никаких проверок выполняться не будет, выведется сообщение, как показано на рис. 1.

user posted image

Теперь напишем код обработки чтения указанного файла:
QUOTE

  if (!empty($_GET['read']))
  {

$txt = file ($adress); //получаем содержимое файла
echo '<br><b>Содержимое файла <font color=red>'.$adress.'</font>:</b><p>';
//делаем контур таблицы и закрашиваем его для выделения содержимого файла
echo '<table border=1 align=center bgcolor=#CCCCCC width=90%><tr><td><code>';
//вывод содержимого в цикле
for($i=0;$i<count($txt);$i++)
  echo htmlspecialchars($txt[$i])."<br>";
echo '</code></td></tr></table>';


Здесь нет ничего сложного — мы получаем содержимое указанного файла в переменную $txt и выводим ее в браузер, предварительно отформатировав. Так как текст не должен быть доступен для редактирования, мы выводим его в таблицу с заливкой. Форматирование текста любой может устроить на свой вкус. Я решил поставить там тэг <code>, так как лично мне приходится таким образом изменять PHP- и HTML-коды.

Далее следует проверить, действительно ли пользователь хочет редактировать файл, но перед этим следует обрабатывать возможные опции «Сохранить» и «Сохранить как…». Опишем в коде сначала их:
QUOTE

//если при редактировании была нажата кнопка «Сохранить»
  if (!empty($_GET['save']))
{
$txt = $_GET['txt']; //получаем содержимое текстовой области
$fp = fopen($adress,'w+'); //открытие файла на перезапись
fwrite($fp,$txt); /* записываем новое содержимое текстовой области в изменяемый файл */
fclose($fp); //закрытие файла
}
//если при редактировании была нажата кнопка «Сохранить как…»
if (!empty($_GET['save_as']))
{
$txt = $_GET['txt'];
$fp = fopen($_GET['filename'],'w+'); /* запись содержимого текстовой области в указанный файл */
fwrite($fp,$txt);
fclose($fp);
}


Обработка сохранения и сохранения с указаниями имени файла подобны. Разница состоит в именах файлов, куда осуществляется запись. Если выбрана опция «Сохранить как…», мы сразу же указываем имя нового файла в поле, таким образом запись содержимого осуществляется именно туда. При простом сохранении весь редактируемый текст оказывается в файле, который редактируется в данный момент. Я специально написал проверку на сохранение файла перед тем как описывать редактирование — если в файл внесены изменения, то пользователь должен получить их моментально, без обновления страницы. Последнее, что осталось — это описать функцию редактирования файла, которая осуществляется при нажатии на кнопку «Редактировать»:
QUOTE

  if (!empty($_GET['write']))
  {
$txt = file ($adress);
echo '<br><b>Файл <font color=red>'.$adress.'</font> в режиме редактирования:</b><p>';
echo '<table border=1 align=center bgcolor=#CCCCCC width=90%><tr><td>';
//создаем новую форму внутри таблицы
echo '<form action=editor.php method=GET>';
//скрытые поля с адресом и действиями
echo '<input type=HIDDEN value='.$adress.' name=adress>';
echo '<input type=HIDDEN value=1 name=write>';
echo '<textarea name=txt cols=100% rows=20>';
for($i=0;$i<count($txt);$i++)
  echo htmlspecialchars($txt[$i]);
echo '</textarea></td></tr></table><p>';
//вывод функций сохранения файла
echo '<input type=submit value=Сохранить name=save><p>';
echo '<input type=text name=filename> ';
echo '<input type=submit value="Сохранить как..." name=save_as>';
echo '</form>';
  }

}
}
?>


Редактирование немного напоминает обычное чтение файла. Текст из указанного файла загружается уже не в таблицу, а прямо в область для ввода текста, чтобы дать возможность редактировать и вносить изменения в файл. Ниже таблицы размещаются две кнопки — «Сохранить» и «Сохранить как…», обработку нажатия на которые мы уже реализовали.

Заключение

Скрипт полностью готов к использованию, я уже давно успешно его использую, что и вам советую :-). На рис. 2 показано чтение файла с помощью разработанного сценария.
user posted image
PMEmail Poster
Top
DelphiST
Отправлено: Dec 4 2007, 01:40 PM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 1093
Пользователь №: 796
Регистрация:
23-May 07



Не увидел запуска сценария (exec). Так статья хорошая... но бесполезная. Щас на любом хостинге есть и FTP и web-файл-навигатор


--------------------
user posted image
PMEmail PosterICQ
Top
Домофонщик
Отправлено: Dec 4 2007, 02:15 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 244
Пользователь №: 1099
Регистрация:
22-August 07



Стобой я полностью согласен!!!
Но етот скрипт тоже очень полезен в своей мере!
Можно в любой момент зайти на сайт, и отредактировать любой файл (html, PHP)
PMEmail Poster
Top
Asid Storm
Отправлено: Dec 4 2007, 07:33 PM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 895
Пользователь №: 39
Регистрация:
27-August 06



Не помешало бы защитку сделать, а то лбой зайдёт пропишет editor.php )
И удалит/отредактирует все файлы )
PMEmail PosterUsers WebsiteICQ
Top
Домофонщик
Отправлено: Dec 6 2007, 01:14 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 244
Пользователь №: 1099
Регистрация:
22-August 07



Немешалобы!
Но увы я не знаю как!!!
---
А может ты знаеш как ето зделать??? biggrin.gif

Asid Storm: Дабл постинг...
PMEmail Poster
Top
p1ay3r
Отправлено: Dec 6 2007, 09:20 PM
Quote Post


  Майор
*

Группа: Members
Сообщений: 106
Пользователь №: 1016
Регистрация:
30-June 07



он говорит как йода)))))


--------------------
user posted image
PMEmail PosterICQ
Top
Asid Storm
Отправлено: Dec 6 2007, 10:31 PM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 895
Пользователь №: 39
Регистрация:
27-August 06



Щас времени нет )))
На выходных немного отредактирую скрипт ))))
PMEmail PosterUsers WebsiteICQ
Top
ruitrjiu
Отправлено: Dec 7 2013, 02:18 PM
Quote Post


  Unregistered









Leading Down The structure party handled the room<br><br>with the very best all the way down. You start with signals, they will chose the Fillista pendant rug Moncler Jackets as a result of IKEA $29. 99, encouraged by way of a different mid-century advanced antique the actual Henningsen Artichoke bulb meant for Poulsen Discount Moncler. We wanted to renovation and also reduce the strength, morale, or resistance the main middle century appearance create the item sought-after. The house provides a well-known house and also were going to Nike Air Max keep most of of which experience while in the room or space. Along with there's a nipper on the family members and we wished to keeping it pleasurable, defined Turner.<br>
Top Throughout the design squad dealt with the space
Devilish Interiors Design Pair of Beverly
Typically the corner calculated big rood tttttt
Top
ruitrjiu
Отправлено: Dec 13 2013, 02:37 AM
Quote Post


  Unregistered









Ya think which will Miley's EMAs<br><br>stunt ended up being scandalous together with incredible, and also has got the take celeb previously be depleted for different ways to astonish along with idolatry? women ugg A great deal more From This Factor: Miley Cyrus's 'Wrecking Ball' Videos Parodied by Betty White-colored: Several other Super stars Spoof Miley Miley Cyrus Needed Partially nude VMAs Efficiency: Many times She has Removed Lower I got watching one of the best Cheap Ugg Boots YouTube actors The particular Great Bros and their latest Canada Goose Jackets video clip from them Boys and girls Take action range,<br>
Really likely which will the woman's stop failed to shock many
broadcast full straight-forward stop these times
Do you think of which Miley's EMAs xxxxxx
Top

Topic Options Reply to this topicStart new topicStart Poll

 



[ Script Execution time: 0.0325 ]   [ 10 queries used ]   [ GZIP выключен ]