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 に答える