POST提交过来模式为 Request Payload 的 json 类型数据

  1. 从html发送过来的Payload格式为 Request Payload

    内容格式为:{“userid”: “33”,”usercode”: “55”}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    methods:{
    login(){
    var thisvue = this;
    if(thisvue.userid==''||thisvue.usercode=='')
    {
    thisvue.errorMsg = '请输入用户名和密码';
    thisvue.errorFlag = true;
    }
    else
    {
    this.$axios({
    method:'POST',
    url:'/api/myBlog/axios-login.php',
    data:{
    userid:thisvue.userid,
    usercode:thisvue.usercode
    },
    }).then((res)=>{
    if(res.data.length == 0)
    {
    console.log("Mysql 数据错误!")
    }
    else if(res.data[0].code==1)
    {
    alert("登录成功")
    thisvue.errorFlag = false;
    window.location.href="./homemobile.html";
    }
    else{
    thisvue.errorMsg = '账号或密码错误';
    thisvue.errorFlag = true;
    }
    })

    }

    }
    },// method
  2. 使用 file_get_contents(‘php://input’); 方式进行接收

    之前尝试使用 $_POST 模式接收 POST 过来的数据,但总得到的数据为空,找了很多方法才发现是类型不对!

    1
    2
    3
    4
    5
    6
    7
    8
    9
       session_start();
    header('Content-Type:application/json; charset=utf-8');

    $form = file_get_contents('php://input'); //在这里post方法是无效得,所以用这个语句,无需任何配置
    $formi = json_decode($form,true); //JSON转换。 from是数组, true
    $arr2=$formi; //我多做了一些步骤测试

    $myid = $arr2["userid"];
    $mycode = md5($arr2['usercode']);

    POST 提交过来模式为 Form Data 单格式

$_POST 变量预定义的 $_POST 变量用于收集来自 method=”post” 的表单中的值。
从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。
注释:然而,默认情况下,POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)

  1. 从html发送过来的Payload格式为 Form Data

    内容格式为:
    userid: zm
    username: zha
    usercode: zm
    checkusercode: zml
    usermail: zhaoming

请注意,表单域的名称会自动成为 $_POST 数组中的键

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
register(){
var thisvue = this;
if(thisvue.usermail==''||thisvue.code=='')
{
thisvue.errorMsg = '你还没有进行邮箱验证';
thisvue.errorFlag = 1;
}
else{
thisvue.verifyCode();
this.$axios({
url:"/api/myBlog/axios-register.php",
// type:'POST',
method:'post',
data:$('#registerForm').serialize(this.serialize), //可以发送 FORM 类型数据了
}).then((res)=>{
if(res.data['code']==1)
{
alert("注册成功")
window.location.href = 'indexmobile.html';
}
else{
thisvue.errorMsg = '注册失败:'+res.data['msg'];
thisvue.errorFlag = 1;
}
})
}
},

注意:
不能使用 type:’POST’, 要不然接收不到数据
要使用 data:$(‘#registerForm’).serialize(this.serialize),
而非 data:this.$(“#registerForm”).serialize(),

  1. 使用 $_POST 方式进行接收
    1
    2
    3
    4
    5
    6
    7
    session_start();
    header('Content-Type:application/json; charset=utf-8');
    $myid = $_POST['userid'];
    $mycode = md5($_POST['usercode']);

    $myname = $_POST['username'];
    $mymail = $_POST['usermail'];

注意:括号内使用的是单引号[‘’]而不是[“”]

$_POST 简单试验说明

html端

1
2
3
4
5
6
7
<form action="welcome.php" method="post">
Name:<input type="text" name="fname">
<br />
Age:<input type="text" name="age">
<br />
<input type="submit">
</form>

php端

1
2
3
4
5
6
<?php
$a=$_POST['fname'];
$b=$_POST['age'];
echo $a."<br />";
echo $b."<br />";
?>

$_POST 表单保存 json 文件

html端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>form</title>
</head>
<body>
<div>
<form action="form.php" method="post">
<span>姓名:</span><input type="text" name="username"><br />
<span>密码:</span><input type="password" name="password"><br />
<input type="submit">
</form>
</div>
</body>
</html>

php端-建立一个 form.php 文件

1
2
3
4
5
6
7
8
9
10
11
<?php
$userInfo = $_POST;
//把获取的用户信息数组编码成json字符串
$json = json_encode($userInfo);
//打开json文件,如果没有json文件则自动创建json文件
$file = fopen('form.json','w+');
//把json字符串$json写入json文件form.json
fwrite($file,$json);
//关闭文件
fclose($file);
?>

何时使用 method=”post”?
从带有 POST 方法的表单发送的信息,对任何人都是不可见的,并且对发送信息的量也没有限制。
然而,由于变量不显示在 URL 中,所以无法把页面加入书签。

PHP $_REQUEST 变量
预定义的 $_REQUEST 变量包含了 $_GET、$_POST 和 $_COOKIE 的内容。

$_REQUEST 变量可用来收集通过 GET 和 POST 方法发送的表单数据。


相关链接

  1. 菜鸟教程
  2. PHP中的$_POST变量
  3. PHP获取前端form数据并保存在json中

=================我是分割线=================

欢迎到公众号来唠嗑: