我在fopen中使用了错误的参数吗?

时间:2013-02-13 06:57:46

标签: php html ajax json string

我将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的参数以获得不同的结果,其中没有一个是我希望的结果。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

你根本没有定义变量$json。对于所有PHP都知道,$json为空。你的代码试图打开一个文件(用于阅读),但该文件为空!