我尝试使用postman发送一些post值到我的脚本php...但是我只能打印出post值,如果我使用x-www-form-urlencoded,而不是如果我通过form-data发送数据?
这是为什么?无法理解x-www-form-urlencoded和form-data之间的差异。
php代码测试:
<?php
// this script call to register new user into db
require ("../private/index.php");
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$staff = $_POST['staff_ID'];
$email = $_POST['email'];
$pass = $_POST['password'];
$name = $_POST['Name'];
$surname = $_POST['Surname'];
$role = $_POST['Role'];
$instructor = $_POST['Instructor'];
$date = $date = date("Y-m-d H:i:s",time());
$dataReceived = array('staff_ID'=>$staff,
'email'=>$email,
'password'=>$pass,
'Name'=>$name,
'Surname'=>$surname,
'Role'=>$role);
echo json_encode($dataReceived);
$sql = "INSERT INTO `users_nx`(`staff_ID`,`password`,`email`,`Name`,`Surname`,`Role`) VALUES ($staff,$pass,$email,$name,$surname,$role)";
if ($mysqli->query($sql) === TRUE) {
echo resultOperations(true, $mysqli);
} else {
echo resultOperations(false,$mysqli);
}
}
1条答案
按热度按时间wljmcqd81#
在传输过程中,x-www-form-urlencoded和form-data都被携带在请求体中。
首先,x-www-form-urlencoded一般用于表单的提交,如多个输入字段,form-data用于文件的提交,如file文件、图片图像等,前者是json key-value格式的字符串,后者是二进制流。
为什么我不能在php服务器上得到数据呢?我不知道php,我以前在nodejs上测试过,nodejs需要一个名为bodyparser的npm来将字符串key格式化为json key-value. php应该有这个解析过程.所以你可以直接得到json数据.但是,如果你使用的是form-data,无法根据解析规则解析此二进制文件。2需要通过流解析获取它。
这可能有点麻烦,但是您可以打印http请求主体的数据来查看差异。