如何在不同的会话中添加新条目

时间:2012-07-03 11:09:18

标签: php

我正在尝试的问题是关于这段代码:

<?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格式对其进行编码并保存到文件中,将新条目附加到文件中。 它运行良好,但是当我开始一个新的会话时,该文件被覆盖,并从空重新开始。

任何帮助?

1 个答案:

答案 0 :(得分:2)

更改模式

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

'a'仅限写作;将文件指针放在。的末尾   文件。如果该文件不存在,请尝试创建它。

Reference

替代方案:

file_put_contents FILE_APPEND LOCK_EX 标记一起使用

  

此函数与调用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);