0

私が実験している問題は、このコードに関するものです:

<?php

    session_start();
    /* ... */

    if(!array_key_exists('entries', $_SESSION) || array_key_exists('reset', $_GET))
    {
        $_SESSION['entries'] = array();
    }

    $_SESSION['entries'][] = array("name" => $_GET["name"]);

    // json
    $json_string = json_encode($_SESSION['entries']);

    //file
    $newfile="location.json";
    $file = fopen ($newfile, "w");
    fwrite($file, $json_string);
    fclose ($file);
    ?> 

スクリプトは POST 変数を取得し、それらを json 形式でエンコードしてファイルに保存し、新しいエントリをファイルに追加します。うまく機能しますが、新しいセッションを開始すると、ファイルが上書きされ、空からやり直されます。

何か助けはありますか?

4

1 に答える 1

2

モードを変更する

 $file = fopen ($newfile, "a");

'a' 書き込み専用です。ファイルポインタをファイルの最後に置きます。ファイルが存在しない場合は、作成してみてください。

Reference

別 :

FILE_APPEND AND LOCK_EXフラグfile_put_contents で使用

この関数は、fopen()、fwrite()、および fclose() を連続して呼び出して、データをファイルに書き込むのと同じです。

// using the FILE_APPEND flag to append the content to the end of the file
// and the LOCK_EX flag to prevent anyone else writing to the file at same time
file_put_contents($file, FILE_APPEND | LOCK_EX);
于 2012-07-03T11:13:19.900 に答える