web-dev-qa-db-fra.com

Simple PHP éditeur de fichiers texte

J'ai développé un site pour un client et il souhaite pouvoir éditer une petite partie de la page principale dans une solution de type backend. Donc, comme solution, je veux ajouter un éditeur très basique (domain.com/backend/editor.php) qui, lorsque vous le visiterez, aura un champ de texte avec le code et un bouton de sauvegarde. Le code qu'il éditera sera défini sur un fichier TXT.

Je suppose que cela serait facile à coder dans PHP, mais Google ne m'a pas aidé cette fois-ci. J'espère qu'il y aura peut-être quelqu'un ici qui me dirigera dans la bonne direction. Notez que je n'ai aucune expérience de la programmation PHP, uniquement du code HTML et du code javascript de base, soyez donc précis dans votre réponse.

18
Alehandro Darie

Vous créez un formulaire HTML pour modifier le contenu du fichier texte. Si le fichier est soumis, vous mettez à jour le fichier texte (et vous redirigez le formulaire pour éviter les avertissements 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>
37
hakre

Pour lire le fichier:

<?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
Niels

La première chose à faire est de capturer les informations. Le moyen le plus simple consiste à utiliser un formulaire HTML avec un TEXTAREA: 

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

Sur 'save.php' (ou ailleurs), vous pouvez facilement voir les informations envoyées à partir du formulaire:

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

Pour créer un fichier, jetez un coup d’œil aux commandes fopen/fwrite en PHP, un autre exemple simpliste:

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

ATTENTION: Ceci est une réponse extrêmement simpliste! Vous voudrez peut-être protéger votre formulaire et votre fichier, ou faire des choses différentes ... Tout ce qui précède fera, c'est d'écrire EXACTEMENT ce qui a été posté dans le formulaire dans un fichier. Si vous souhaitez spécifier des noms de fichiers différents, écraser, ajouter, vérifier les mauvais contenus/spams, etc., vous devrez faire plus de travail. 

Si vous avez un éditeur accessible au public et publiant du contenu sur une page Web, la protection anti-spam est une exigence DEFINITE ou vous en viendrez à le regretter!

Si vous n'êtes pas intéressé par l'apprentissage de PHP, vous devriez alors envisager de faire appel à un développeur professionnel pour s'occuper de tout travail de codage à votre place!

0
Codecraft

Qu'est-ce que vous avez sur Google alors? php write file me donne quelques millions de hits. 

Comme dans le manual pour 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!
?>

Mais pour être honnête, vous devriez d’abord prendre un livre PHP et commencer à essayer. Vous n'avez posté aucune exigence, si ce n'est que vous souhaitez poster un champ de texte (textarea je veux dire?) Dans un fichier TXT. Cela fera:

<?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
}

Notez que cela correspond exactement à votre description. Il ne lit pas le fichier lors de l'impression du formulaire (chaque fois que vous souhaitez modifier le texte, vous devez recommencer à zéro), il ne vérifie rien dans l'entrée (souhaitez-vous que l'utilisateur puisse publier du code HTML ?), il n’a aucun contrôle de sécurité (tout le monde peut y accéder et modifier le fichier), et il ne lit en aucun cas le fichier pour l’afficher sur la page de votre choix.

0
CodeCaster

Comme j'avais un besoin similaire, nous avons créé une solution conviviale pour les clients, appelée stringmanager.com, que nous utilisons pour tous nos projets et tous les endroits où le système de gestion de contenu n'est pas efficace.

De votre côté, il vous suffit de marquer une chaîne dans le code, à savoir de: 

echo "Texte qu'il veut éditer"; à:

echo _t ("S_Texthewantstoedit"); 

stringmanager.com s'occupe du reste. Votre client peut gérer cette zone de texte particulière dans notre application en ligne et synchroniser où il le souhaite. Presque oublié de mentionner, c'est totalement gratuit. 

0
Brano

Vous recherchez fondamentalement un concept similaire à celui d'une forme de contact ou similaire.

Appliquez les mêmes principes à partir d’un tutoriel tel que celui-ci _ _ _ _ _ et au lieu d’envoyer un e-mail à l’aide de mail, consultez le fonctions des fichiers } de PHP.net.

0
James