web-dev-qa-db-ja.com

シンプルなPHPテキストファイルのエディター

クライアント用のサイトを開発しましたが、彼はバックエンドタイプのソリューションでメインページの小さな部分を編集できるようにしたいと考えています。そのため、解決策として、非常に基本的なエディター(domain.com/backend/editor.php)を追加します。このエディターにアクセスすると、コードと保存ボタンのあるテキストフィールドが表示されます。編集するコードは、TXTファイルに設定されます。

このようなことはPHPでコーディングするのは簡単だと思いますが、今回はgoogleが私を助けてくれなかったので、正しい方向を指し示す誰かがここにいることを望んでいます。私はPHPプログラミング、HTMLと基本的なjavascriptのみの経験がありませんので、あなたが提供する返信には徹底してください。

18
Alehandro Darie

テキストファイルのコンテンツを編集するには、HTMLフォームを作成します。送信された場合は、テキストファイルを更新します(F5 /更新の警告を防ぐためにフォームに再度リダイレクトします)。

<?php

// configuration
$url = 'http://example.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

ファイルを読むには:

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

最初に行うことは、情報をキャプチャすることです。これを行う最も簡単な方法は、TEXTAREAでHTMLフォームを使用することです。

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

'save.php'(またはどこでも)では、フォームから送信された情報を簡単に確認できます。

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

実際にファイルを作成するには、PHPのfopen/fwriteコマンドをご覧ください。別の単純な例です。

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

警告:これは非常に単純な答えです!フォームとファイルを保護するか、別のことを行うとよいでしょう。上記のすべては、フォームに投稿された内容をファイルに正確に書き込むだけです。異なるファイル名を指定したり、上書き、追加、不正なコンテンツ/スパムのチェックなどを行う場合は、さらに作業を行う必要があります。

公開されていてコンテンツをWebページに公開するエディターをお持ちの場合、スパム保護はDEFINITEの要件であるか、後悔することになります!

PHPの学習に興味がない場合は、プロの開発者にコーディング作業を任せてください。

0
Codecraft

そのときGoogleは何をしましたか? php write file は、数百万のヒットを与えます。

fwrite()の-​​ manual の場合:

<?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の本を選んで試してみてください。テキストフィールド(つまり、テキストエリアですか?) TXT file。これは以下を行います:

<?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を投稿できるようにしますか?)、セキュリティチェックはなく(誰でもアクセスしてファイルを変更できます)、ファイルを読み取って目的のページに表示することはできません。

0
CodeCaster

同様のニーズがあったので、CMSが有効でないすべてのプロジェクトと場所で使用するstringmanager.comというクライアントフレンドリーなソリューションを作成しました。

あなたの側からは、コード内の文字列にタグを付ける必要があります:

echo "編集したいテキスト";に:

echo _t( "S_Texthewantstoedit");

stringmanager.comが残りを処理します。クライアントは、オンラインアプリケーションの特定のテキスト領域を管理し、好きな場所で同期できます。言及するのをほとんど忘れていましたが、完全に無料です。

0
Brano

あなたは基本的に、コンタクトフォームなどに似た概念を探しています。

this one のようなチュートリアルから同じ原則を適用し、mailを使用して電子メールで送信する代わりに、PHP.netから file functions をチェックアウトします。

0
James