当有人通过html表单填充数据后,我想将数据写入json文件。因此,我使用php读写json文件。对于服务器端,我在aws ubuntu上使用apache。
这是我的html代码:
<div class="container">
<form class="wrapper" style="float: left;" action="php/SendEmail.php" method="POST">
<div class="title2">
<h1>Contact Me</h1>
</div>
<div class="contact-form">
<div class="input-fields">
<input name="name" type="text" class="input" placeholder="Name" required>
<input name="email" type="email" class="input" placeholder="Email Address" required>
<input name="phone" type="text" class="input" placeholder="Phone">
<input name="subject" type="text" class="input" placeholder="Subject" required>
</div>
<div class="msg">
<textarea placeholder="Message" name="message"></textarea>
<input class="btn send" type="submit" value="send"></input>
</div>
</div>
</form>
<div style="float: left;" id="rightContact">
<div class="contactSoc"><i class="fab fa-linkedin fa-3x"></i><a href="https://www.linkedin.com/in/zhikun-yuen-2418761a1" class="contactSoclink">View My Linkedin</a></div>
<div class="contactSoc"><i class="fab fa-github-square fa-3x"></i><a href="https://github.com/SamYuen101234" class="contactSoclink">View My Github</a></div>
<div class="contactSoc"><i class="fab fa-facebook-square fa-3x"></i><a href="https://www.facebook.com/profile.php?id=100000376414607" class="contactSoclink">View My Facebook</a></div>
<div class="contactSoc"><i class="fas fa-envelope-square fa-3x"></i><a href="mailto:samyuan101234@gmail.com" class="contactSoclink">samyuan101234@gmail.com</a></div>
</div>
</div>
这是php的代码:
<?php
chmod("messagelog.json", 0755);
$messagelog = 'messagelog.json';
$arr_data = array();
$name = $_POST["name"];
$visitor_email = $_POST["email"];
$visitor_phone = $_POST["phone"];
$subject = $_POST["subject"];
$message = $_POST["message"];
try{
$formdata = array(
'name'=> $name,
'visitor_email'=> $visitor_email,
'visitor_phone'=>$visitor_phone,
'subject'=> $subject,
'message'=> $message
);
//Get data from existing json file
$jsondata = file_get_contents($messagelog);
// 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);
var_dump($jsondata);
//write json data into data.json file
if(file_put_contents('messagelog.json', $jsondata)) {
echo 'Data successfully saved';
}
else
echo "error";
}catch(Exception $e){
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
这是浏览器上的输出:
/home/ubuntu/environment/main/php/SendEmail.php:34:string '[
{
"name": "Vijay",
"visitor_email": "reddy@gmail.com",
"visitor_phone": "3284902384",
"subject": "Testing",
"message": "Message"
},
{
"name": "testing",
"visitor_email": "testing@test.com",
"visitor_phone": "testing",
"subject": "testing",
"message": "testing"
}
]' (length=362)
error
我的代码或设置有什么问题?我可以从json文件中读取数据,但无法向其中写入数据。我使用chomd更改了RW权限,但是它不起作用。是Apache的问题吗?