1

所以我们在课堂上制作了一种日志。有一个输入框和一个按钮。每次按下按钮时,PHP 都会写入文本文件并打印当前日志。现在文本出现在底部,我们需要让文本出现在顶部。现在我们将如何做到这一点?

我们尝试与很多同学一起这样做,但这一切都导致了奇怪的行为。(比如文本打印不止一次,等等)

非常感谢!

编辑:对不起,这是代码:

<html lang="en">
<head>
    <title>php script</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <form name="orderform" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">  
    <input type="text" name="text"/>
    <input type="submit" value="Submit" />
    <?php
        //Basic variables
        echo("<br/>");
        $myFile = "log.txt";
        $logfile = fopen($myFile,'r+');
        $theData = fread($logfile,filesize($myFile));

        //Cookie stuff so the username is rememberd.
        $username = $_COOKIE['gebruikerscookie'];;
        if(isset($_POST['username'])){
            $gebruiker = $_POST['username'];
            if($_COOKIE['gebruikerscookie'] == $gebruiker){
                $username = $_COOKIE['gebruikerscookie'];
                echo("Welcome back");
            }else{
                setcookie("gebruikerscookie", $gebruiker);
                $username = $_COOKIE['gebruikerscookie'];
                echo("Welcome dude!");
            }           
        }

        //Checks if theres something inside 
        if(isset($_POST['text'])){
            $message = "<br/>". $username ." : " . $_POST['text'];
            fwrite($logfile, $message ,strlen($message));
        }
        echo($theData);
    ?>
    </form>
</body>

4

4 回答 4

1

检查fopen模式手册:http ://www.php.net/manual/en/function.fopen.php

尝试'r+' Open for reading and writing; place the file pointer at the beginning of the file.

尽管没有任何代码,但这很难回答。

于 2013-03-08T13:58:04.960 回答
1
<?php
$contentToWrite = "Put your log content here \n";
$contentToWrite .= file_get_contents('filename.log');
file_put_contents('filename.log', $file_data);
?>

这将在您的当前内容之后添加文件的先前内容并写入您的文件。

如果您有任何疑问,请回复。

于 2013-03-08T14:01:21.917 回答
0

你只是错过了

fclose();

我假设,因为不关闭文件句柄会导致很多像这样的奇怪错误。

所以

$myFile = "log.txt";
$logfile = fopen($myFile,'r+');
........
//Checks if theres something inside 
if(isset($_POST['text'])){
   $message = "<br/>". $username ." : " . $_POST['text'];
   fwrite($logfile, $message ,strlen($message));
}
fclose($logfile); // close it outside the if-condition!
echo($theData);

应该做的伎俩

于 2013-03-08T15:46:43.300 回答
-1
$log = file('log.txt');
krsort($log);
foreach($log as $line) echo "$line<br>\n";
于 2013-03-08T13:58:52.507 回答