Простой PHP редактор текстовых файлов - PullRequest
18 голосов
/ 22 ноября 2011

Я разработал сайт для клиента, и он хочет иметь возможность редактировать небольшую часть главной страницы в виде серверного решения.Поэтому в качестве решения я хочу добавить очень простой редактор (domain.com/backend/editor.php), который при посещении будет иметь текстовое поле с кодом и кнопку сохранения.Код, который он будет редактировать, будет установлен в TXT-файл.

Я бы предположил, что такую ​​вещь будет легко закодировать в PHP, но на этот раз Google не помог мне, поэтому я надеюсь, что возможнокто-то здесь, который укажет мне правильное направление.Обратите внимание, что у меня нет опыта программирования на PHP, только HTML и базовый javascript, поэтому будьте внимательны в любом ответе, который вы предоставите.

Ответы [ 7 ]

37 голосов
/ 22 ноября 2011

Вы создаете HTML-форму для редактирования содержимого текстового файла. В случае отправки, вы обновляете текстовый файл (и снова перенаправляете на форму для предотвращения предупреждений F5 / Обновить):

<?php

// configuration
$url = 'http://domain.com/backend/editor.php';
$file = '/path/to/txt/file';

// check if form has been submitted
if (isset($_POST['text']))
{
    // save the text contents
    file_put_contents($file, $_POST['text']);

    // redirect to form again
    header(sprintf('Location: %s', $url));
    printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
    exit();
}

// read the textfile
$text = file_get_contents($file);

?>
<!-- HTML form -->
<form action="" method="post">
<textarea name="text"><?php echo htmlspecialchars($text) ?></textarea>
<input type="submit" />
<input type="reset" />
</form>
3 голосов
/ 22 ноября 2011

Чтобы прочитать файл:

<?php
    $file = "pages/file.txt";
    if(isset($_POST))
    {
        $postedHTML = $_POST['html']; // You want to make this more secure!
        file_put_contents($file, $postedHTML);
    }
?>
<form action="" method="post">
    <?php
    $content = file_get_contents($file);
    echo "<textarea name='html'>" . htmlspecialchars($content) . "</textarea>";
    ?>
    <input type="submit" value="Edit page" />
</form>
0 голосов
/ 22 июля 2014
<?php
$file = "127.0.0.1/test.html";
$test = file_get_contents('1.jpg', 'a');
if (isset($_POST['test'])) {
file_put_contents($file, $_POST["test"]);
};
?>
<form action="" method="post">
<textarea id="test" name="test" style="width:100%; height:50%;"><? echo "$test"; ?></textarea>
<input type="submit" value="submit">
</form>

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

0 голосов
/ 08 февраля 2013

У меня возникла аналогичная потребность, поэтому мы создали удобное для клиента решение под названием stringmanager.com, которое мы используем во всех наших проектах и ​​местах, где CMS неэффективна.

С вашей стороны, вам просто нужно пометить строку в коде, т.е. из:

echo "Текст, который он хочет отредактировать"; чтобы:

echo _t ("S_Texthewantstoedit");

stringmanager.com позаботится об остальном. Ваш клиент может управлять этой конкретной текстовой областью в нашем онлайн-приложении и синхронизировать, где он хочет. Почти забыл упомянуть, это совершенно бесплатно.

0 голосов
/ 22 ноября 2011

Первое, что нужно сделать, - это захватить информацию, самый простой способ сделать это - использовать HTML-форму с TEXTAREA:

<form method='post' action='save.php'>
  <textarea name='myTextArea'></textarea>
  <button type='submit'>Go</button>
</form>

На «save.php» (или где-либо) выможно легко увидеть информацию, отправленную из формы:

<?php
  echo $_POST['myTextArea']
?>

Чтобы создать файл, взгляните на команды fopen / fwrite в PHP, еще один упрощенный пример:

<?php 
  $handle = fopen("myFile.txt","w");
  fwrite($handle,$_POST['myTextArea'];
  fclose($handle);
?>

ВНИМАНИЕ: Это очень упрощенный ответ!Возможно, вы захотите защитить свою форму и свой файл, или сделать что-то другое ... Все, что было сказано выше, это ТОЧНО записать то, что было опубликовано в форме, в файл.Если вы хотите указать разные имена файлов, перезаписать, добавить, проверить на наличие плохого контента / спама и т. Д., Вам нужно будет проделать дополнительную работу.

Если у вас есть общедоступный редактор, который публикует контент на веб-странице, тогда защита от спама является ОПРЕДЕЛЕННЫМ или вы пожалеете об этом!

ЕслиВы не заинтересованы в изучении PHP, тогда вам следует подумать о том, чтобы найти профессионального разработчика, который позаботится о любой работе за вас!

0 голосов
/ 22 ноября 2011

Вы в основном ищете концепцию, похожую на контактную форму или тому подобное.

Примените те же принципы из учебника, как этот , и вместо электронной почты, используя mail, ознакомьтесь с функциями файла из PHP.net.

0 голосов
/ 22 ноября 2011

Что вы тогда гуглили? php write file дает мне несколько миллионов просмотров.

Как в руководстве для fwrite():

<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);

// the content of 'data.txt' is now 123 and not 23!
?>

Но, честно говоря, вы должны сначала взять книгу по PHP и начать пробовать. Вы не опубликовали ни одного требования, кроме того, что хотите опубликовать текстовое поле (я имею в виду textarea?) В TXT-файл. Это будет делать:

<?php
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
    $handle = fopen("home.txt", 'w') or die("Can't open file for writing.");
    fwrite($fh, $_POST['textfield']);
    fclose($fh);
    echo "Content saved.";
}
else
{
    // Print the form
    ?>
    <form method="post">
        <textarea name="textfield"></textarea>
        <input type="submit" />
    </form>
    <?php
}

Обратите внимание, что это точно соответствует вашему описанию. Он не читает файл при печати формы (поэтому каждый раз, когда вы хотите отредактировать текст, вы должны начинать с нуля), он не проверяет ввод данных (вы хотите, чтобы пользователь мог публиковать HTML ?), у него нет проверки безопасности (каждый может получить к нему доступ и изменить файл), и он никоим образом не читает файл для отображения на странице, которую вы хотите.

...