使用PHP将数据POST到永久json文件

时间:2012-07-04 14:59:03

标签: php json

使用网址,我的想法是任何用户都可以发布数据。例如通过

http://myweb.com/index.php?name=Peter&surname=Brown

使用“jedwards”答案,显示here,我可以创建一个json并将其保存到文件中。

<?
/* This needs to be at the top of your file, without ANYTHING above it */
session_start();

/* ... */

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

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

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

我的问题是,这在不同的会话或用户中不是永久性的。它仅适用于同一会话。在不同的会话中,json从一开始就建立了。

3 个答案:

答案 0 :(得分:0)

首先,不要使用GET请求来更改服务器的状态。 GET只能从服务器读取(或嗯.. GET )数据。

要更改数据,请使用POST。它更合适,更安全,并且在传输大量数据时非常棒。

现在,针对手头的问题。对于更永久的解决方案,最好的选择是强制用户注册,并在数据库中保存所需的数据,并引用用户的ID。

答案 1 :(得分:0)

是的,因为会话,顾名思义,只是暂时的(排序本地)。当浏览器关闭时它就消失了。根据您的需求,您必须在服务器上使用数据库或文本文件之间进行选择。

不会对此类数据进行Cookie或会话。

答案 2 :(得分:0)

如果您正在寻找一个基本的解决方案,请参阅下文。如果没有,请按照其他答案中的建议使用数据库。

<?
/* This needs to be at the top of your file, without ANYTHING above it */
session_start();

/* ... */

$file = sys_get_temp_dir() . '/entries.json';
$data = file_get_contents($file);
$entries = (!empty($data)) ? json_decode($data) : array();

$entries[] = array("name" => $_GET["name"], "surname" => $_GET["surname"]);

file_put_contents($file,json_encode($entries),FILE_APPEND);