Разработка текстового редактора на PHP

0

Я начал небольшой проект, пытаясь сделать текстовый текстовый редактор, он прошел хорошо, пока система не начала перезаписывать файлы и не добавляла лишние места. У меня есть один файл с именем editor.php, где все файлы загружаются, сохраняются и редактируются.

Итак, это открытие/закрытие файлов:

<?php
    if(isset($_POST['new'])){
        $filer = substr(md5(microtime()),rand(0,26),6);
        $file_create = $filer.".txt";
        $handle = fopen("files/".$file_create,"w");
        fclose($handle);
        header("Location: editor.php?e=".$filer);
    }

    $file = $_GET['e'];
    $file = basename($file);
    $filename = "files/".$file.".txt";

    $file_get = file_get_contents($filename);

    if(isset($_POST['save'])){
        file_put_contents($filename, $_POST['text']);
    }
?>

далее вниз по странице У меня это в <textarea>:

<?php
    echo $file_content;
?>

Это использует строку из file_get_contents();

Но когда я сохраняю, ничего не происходит, на самом деле он удаляет файл, когда я загружаю файл, есть восемь пробелов, но ничего больше.

Я знаю, что есть еще один способ сделать это с помощью fopen() и если кто-то может дать мне способ использовать это, это будет очень признательно.

  • 1
    Если этот эксперимент когда-нибудь будет проводиться в Интернете, пожалуйста, всегда очищайте $file . В противном случае удаленный злоумышленник может открыть и, возможно, даже отредактировать случайные файлы на вашем сервере ... Что если я открою сам скрипт PHP и вставлю в него вредоносный код?
Теги:
editor

2 ответа

0

Посмотрите режимы файлов PHP: http://php.net/manual/en/function.fopen.php

Если вы открываете все свои файлы с помощью функции fopen() в режиме w ваши файлы усекаются по мере их открытия. Так работает режим w. Попробуйте использовать a+ или c+ с помощью функции fopen().

РЕДАКТИРОВАТЬ

Кроме того, file_put_contents() также перезапишет содержимое файла, если вы не установите флаг FILE_APPEND, например file_put_contents($file, $data, FILE_APPEND).

  • 0
    Спасибо, я перешел на использование fwrite (), и это, кажется, работает. Я использую с + в качестве режима записи сейчас тоже. Спасибо большое за помощь!
0

Вы должны проверить, действительно ли в $ _POST ['text'] есть контент.

if(isset($_GET['e'])){

    $file = $_GET['e'];
    $file = basename($file);
    $filename = $_SERVER['DOCUMENT_ROOT']."/files/".$file.".txt";
    $file_get = file_get_contents($filename);

    if(isset($_POST['save'])){
       if(!empty($_POST['text']) && isset($_POST['text']))
       {
          $length = strlen($_POST['text']); 
          if($length > 0)
           file_put_contents($filename, trim($_POST['text']));
          else
           die("No content");
       }

    }
}

Также проверьте, существует ли файл и его записывается. Вы можете использовать функции chmod, mkdir и file_exists.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню