0

我有一个自己制作的消息系统(它不好),我需要一些帮助。我在一个框中输入了一些单词然后提交。

<form name="input" action="messagesave.php" method="POST">

$myFile = "messages.txt";
$fp = fopen($myFile, 'a') or die("can't open file");
$stringData = "<div class='messages'>" . $_POST["comment"] . "</div>" . "<br />";
fwrite($fp, $stringData);
fclose($fp);

这会保存我的消息,在单独的页面上显示我的消息

<?php include 'messages.txt';?>

在那个页面上我希望能够删除消息,我尝试使用 Javascript,人们告诉我你需要使用 PHP 来删除它。如何单击消息旁边的内容将其删除?

或者

我可以每次都将消息保存到不同的文件中吗,例如 $myFile = "messages[1 then 2 then 3 ect..]"; 然后通过 php 全部打开 include 'messages[all of them].txt'

或者

还有其他更好的方法来制作评论出现在另一个页面上的评论系统吗?

4

3 回答 3

0

您可以使用unlink删除整个文件?

http://php.net/manual/en/function.unlink.php

if ($_POST['delete_file]) {
    unlink('message.txt');
}

或者,如果您知道消息在文件中的哪一行,您可以删除该行;

于 2013-10-30T08:59:22.003 回答
0

您需要为每个 div 提供 id

$myFile = "messages.txt";

$todo = getRequest('todo', true);

switch($todo) {
    case 'add' :
        $message = getRequest('msg', true);
        if(is_null($message)) {
            //hlandle it
            echo "no message found to add!";
        }
        addMessage($message);
        break;
    case 'remove':
          $id = getRequest($id, true);
           break;
        default:
         echo 'what do you want me to do?';
    }

    function getRequest($key, $only_post = false) {

        if($only_post) {
            if(! isset($_POST[$key])) {
                return null;
            }
            return $_POST[$key];
        }
        if(! isset($_REQUEST[$key])) {
            return null;
        }
        return $_REQUEST[$key];
   }

    function addMessage($message) {
        global $myFile;
        $id = microtime();
        $div = "<div class=\"messages\" id=\"{$id}\">{$message}</div>";
        file_put_contents($myFile, $div ,FILE_APPEND);
    }

    function removeMessage($id) {
        global $myFile;
        $content_list = explode("\n" , file_get_contents($myFile));

        if(empty($content_list)) {
            return false;
        }

        for($i = 0; $i < count($content_list); $i++) {
            if(preg_match("/<div[^<>]*id=\"{$id}\"/i", $content_list[$i])) {
                unset($content_list[$i]);
                break;
            }
        }
        file_put_contents($myFile, implode("\n", $content_list));
    }
于 2013-10-30T10:09:50.920 回答
0

只能使用javascript完成

例如

<div id="message">
<?php include 'messages.txt';?>
</div>

并使用jquery删除此文本文件中div内的特定消息,例如,假设您的消息是这样的

<div id="submessage">Some Text Here</div>

$('#message').click(function(){
  this.find('#submessage').fadeOut ();//This will remove comment div when clicking it's    parent
 });
于 2013-10-30T08:37:20.513 回答