我将json值附加到外部文件。使用ajax和post变量捕获表单数据。我有一个小脚本,它会爆炸json数据字符串,并试图将文件与中间(或实际结尾)的post变量一起内爆。
<?php
$json_file = "data.json";
$json_data = $_POST["newUpload"]."]}";
//something like {"name":"foo","email":"foo@bar.com"}
$fh = fopen($json_file, 'r+'); //I think this is the problem???
$data = fread($fh, filesize($json_file));
$jsonFrags = explode("]}",$data);
$new_data = implode($json_data,$jsonFrags);
fwrite($fh, $new_data);
fclose($fh);
?>
这是我能想出的最简单的事情,允许用户在一个运行XAMPP的网站和一台具有非常有限的互联网访问权限的Windows机器上成长。可能一天两次。
整个JSON看起来像这样:
{"uploads": [{"name":"foo","email":"foo@bar.com","imgurl":"http://placehold.it/50x50"}]}
我将文件数据加载到$data
并在文件字符串“]}”的末尾将其展开。这样它总是追加到最后。但它没有爆炸/内爆给我带来麻烦。我可以使用str_replace并获得相同的结果。运行上面的PHP脚本后,我在data.json中得到了这个:
{"uploads": [{"name":"foo","email":"foo@bar.com","imgurl":"http://placehold.it/50x50"}]}{"uploads": [{"name":"bar","email":"bar@foo.com","imgurl":"http://placehold.it/100x100"}]}
我已经能够改变fopen的参数以获得不同的结果,其中没有一个是我希望的结果。有任何想法吗?
答案 0 :(得分:1)
你根本没有定义变量$json
。对于所有PHP都知道,$json
为空。你的代码试图打开一个文件(用于阅读),但该文件为空!