0

私は、オンライン テキスト エディターを作成しようとする小さなプロジェクトを開始しました。システムがファイルを上書きし、不必要にスペースを追加し始めるまではうまくいきました。すべてのファイルの読み込み、保存、編集が行われる editor.php というファイルが 1 つあります。

したがって、これはファイルの開閉です。

<?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();

しかし、保存しても何も起こらず、実際にはファイルが消去されます。ファイルをロードすると、8 つのスペースがありますが、他には何もありません。

これを行う別の方法があることは知っていますfopen()。誰かがそれを使用する方法を教えてくれれば、非常にありがたいです。

4

2 に答える 2

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 関数を使用できます。

于 2013-10-20T14:04:36.613 に答える
0

PHP のファイル モードを見てみましょう: http://php.net/manual/en/function.fopen.php

fopen()inモードを使用してすべてのファイルを開いている場合w、ファイルは開かれるときに切り捨てられます。これがwモードの動作です。a+またはc+モードを で使用してみてくださいfopen()

編集

また、フラグfile_put_contents()を設定しない限り、ファイルの内容も上書きされます。FILE_APPENDfile_put_contents($file, $data, FILE_APPEND)

于 2013-10-20T14:05:22.193 に答える