我正在尝试从用户那里得到输入,并且在提交时它会保存在Json文件中,但我遇到了错误,并且网络上的解决方案对我没有帮助。
这是我的代码:
<?php
array()
$arr_data[] = array(); // create empty array
$myFile = "sample.json";
try
{
//Get form data
$formdata = array(
'name'=> $_POST['name'],
'age'=> $_POST['age'],
'sex'=> $_POST['sex'],
'education'=>$_POST['edu']
);
//Get data from existing json file
$jsondata = file_get_contents($myFile);
// converts json data into array
$arr_data = json_decode($jsondata, true);
// Push user data to array
array_push($arr_data,$formdata);
//Convert updated array to JSON
$jsondata = json_encode($arr_data, JSON_PRETTY_PRINT);
//write json data into data.json file
if(file_put_contents($myFile, $jsondata)) {
echo 'Data successfully saved';
}
else
echo "error";
}
catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
现在我正在使用代码的表单在这里:
<form id="myform" method="post" action="action.php" >
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label> Name</label>
<input type="text" class="form-control" placeholder="Please type Name" value="" name="name" size="20" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Age</label>
<select class="form-control" placeholder="Please Select Education" value="" id="edu" name="edu" required>
<option selected="true" disabled="disabled" >Please Select Type</option>
<option value="eng">Engineer</option>
<option value="doc">Doctor</option>
<option value="res">Researcher</option>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>Age</label>
<input type="number" class="form-control" placeholder="Please specify Age" value="age" id="age" name="age" size="20" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label>sex</label>
<input type="text" class="form-control" placeholder="Please specify Sex" value="" id="sex" name="sex" size="50" required>
</div>
</div>
</div>
<button type="submit" class="btn btn-info btn-fill pull-right" id="btn" name="btn"> Submit</button>
<div class="clearfix"></div>
</form>
现在问题在于提交。我收到了以下错误,网上没有任何内容可以帮助我。我不知道我错在哪里。
警告:array_push()期望参数1为数组,null中给出null 第34行/Users/path/action.php
警告:file_put_contents(sample.json):无法打开流: 第40行错误/Users/path/action.php中的权限被拒绝
提前感谢您的帮助和时间。
答案 0 :(得分:0)
您只需要设置文件sample.json
的CRUD权限。
在终端运行中:
chmod -R 0777 /path-to/sample.json
这将解决这两个错误:
$jsondata = file_get_contents($myFile); -->> (this returns NULL because of permissions issue)
file_put_contents($myFile, $jsondata) -->> (and this just causing fatal error - again due to permissions)