Editor de PHP simples de ficheiros de texto

Eu desenvolvi um site para um cliente e ele quer ser capaz de editar uma pequena parte da página principal em um tipo de solução de infra-estrutura. Assim, como solução, eu quero adicionar um editor muito básico (domain.com/backend/editor.php) que quando você o visitar, ele terá um campo de texto com o código e um botão de salvar. O código que ele irá editar será configurado para um arquivo TXT.

Eu presumiria que tal coisa seria fácil de codificar no PHP, mas o google não me ajudou desta vez. pode haver alguém aqui que me aponte para a direcção certa. Note que eu não tenho nenhuma experiência em programação PHP, apenas HTML e JavaScript básico por isso, por favor, seja minucioso em qualquer resposta que você fornecer.

Author: Alehandro Darie, 2011-11-22

7 answers

Você cria um formulário HTML para editar o conteúdo do ficheiro de texto. No caso de ser submetido, você atualiza o ficheiro de texto (e redireciona para o formulário novamente para evitar avisos F5/Refresh):

<?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>
 35
Author: hakre, 2015-11-04 08:23:59

Para ler o ficheiro:

<?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>
 3
Author: Niels, 2011-11-22 12:49:36
Estás basicamente à procura de um conceito semelhante ao de uma forma de contacto ou similar.

Aplicar os mesmos princípios a partir de um tutorial como este e em vez de enviar e-mail usando mail verificar as funções de ficheiros de PHP.net.

 0
Author: James, 2011-11-22 12:42:41
No que Pesquisaste no Google? php write file dá-me alguns milhões de visualizações.

Como no manual para 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!
?>
Mas, para ser honesto, devia primeiro pegar num livro do PHP e começar a tentar. Você não postou nenhum requisito único, a não ser que você quer postar um campo de texto (textarea quero dizer?) para um ficheiro TXT. Isto serve.
<?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
}
Note que isto corresponde exactamente à sua descrição. Ele não lê o arquivo ao imprimir o formulário (por isso, todas as vezes você quer editar o texto, você tem que começar do zero), ele não verifica a entrada para nada (você quer que o usuário seja capaz de postar HTML?), não tem verificação de segurança (todos podem acessá-lo e alterar o arquivo), e de forma alguma ele lê o arquivo para exibição na página que você deseja.
 0
Author: CodeCaster, 2011-11-22 12:46:52

A primeira coisa a fazer é capturar a informação, a maneira mais simples de fazer isso seria o uso de um formulário HTML com um TEXTAREA:

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

Em 'Salvar.php' (ou seja onde for) você pode facilmente ver as informações enviadas a partir do formulário:

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

Para criar realmente um ficheiro, dê uma vista de olhos nos comandos fopen/fwrite em PHP, outro exemplo simplista:

<?php 
  $handle = fopen("myFile.txt","w");
  fwrite($handle,$_POST['myTextArea'];
  fclose($handle);
?>
Atenção: esta é uma resposta extremamente simplista! Você talvez queira proteger seu formulário e seu arquivo, ou fazer algum coisa.... Tudo o que acima fará é escrever exatamente o que foi postado no formulário para um arquivo. Se você quiser especificar diferentes nomes de arquivos, sobrepor, adicionar, verificar por conteúdo ruim/spam, etc então você vai precisar fazer mais trabalho.

Se você tem um editor que é acessível ao público e publica conteúdo para uma página web, então a proteção contra spam é um requisito definido ou você vai se arrepender!

Se você não está interessado em aprender PHP então você deve pensar sobre obter um desenvolvedor profissional para cuidar de qualquer trabalho de codificação para você!

 0
Author: Codecraft, 2011-11-22 12:49:56
Eu tinha uma necessidade semelhante, por isso criámos uma solução amigável para o cliente chamada stringmanager.com usamos em todos os nossos projetos e lugares onde o CMS não é eficaz.

Do teu lado, só precisas de marcar o texto no código, ou seja, de:

Echo "texto que ele quer editar"; to:

Echo _t ("S_Texthewantstoedit");

Stringmanager.com cuida do resto. O seu cliente pode gerir essa área de texto em particular na nossa aplicação online e sincronizar onde quiser. Quase esqueci de mencionar, é completamente livre.

 0
Author: Brano, 2013-02-07 21:33:23
<?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>
{[[2]}ainda não tive tempo de terminá-lo, o mais simples possível, vai adicionar mais se quiser.
 -1
Author: Branyon, 2014-07-22 04:25:41