php实现表单提交数据,服务器接收数据

本文内容

讲述了php实现表单中数据的提交,服务器接受数据

0x01 表单提交数据的两种方式

用php实现表单提交数据有两种方式:get方式和post方式。

1.1通过get方式提交数据

<form method="get" action="">
    <input type="text" name="username"  >
</form>

在这里插入图片描述

1.2通过post方式提交数据


<?php
    if(!empty($_POST)){
        echo '您好!' . $_POST['username'].'欢迎登录xxx系统!';
    }
?>
<form method="post" action="">
    姓名:<input type="text" name="username">
</form>

在这里插入图片描述

1.3 post和get的区别

从安全性上来讲,get提交的数据在url栏可以看见,而post提交的数据是不可见的,因此post更安全。
从提交原理上讲,​ get提交是参数一个一个的提交,post提交是所有参数作为一个整体一起提交。
从提交数据的大小上来讲,​ get提交一般不超过255个字节,post提交的大小取决于服务器。

// 在php.ini中,可以配置post提交的大小
post_max_size = 8M

从灵活性上讲,get很灵活,只要有页面的跳转就可以传递参数,post不灵活,post提交需要有表单的参与。

1、html跳转
<a href="?username=admin">点击跳转</a>

2JS跳转
<script type="text/javascript">
	location.href='index.php?name=tom&age=20';
	location.assign('index.php?name=tom&age=20');
	location.replace('index.php?name=tom&age=20');
</script>

3PHP跳转
header('location:index.php?name=tom&age=22')

0x02 服务器接收数据的三种方式

三种方式:

$_GET:关联数组,接受get方式提交的数据
$_POST:关联数组,只接受post方式提交的数据
$_REQUEST:关联数组,接受post、get、cookie(需要设置)
<!--接受post方式提交的数据-->
<?php
    if(!empty($_POST)){
        echo '您好!' . $_POST['username'].'欢迎登录xxx系统!'.'<br>';
        echo 'sex:'.$_POST['sex'],'<br>age:' . $_POST['age'];
    }
?>
<!--接受get方式提交的数据-->
<?php
if(!empty($_GET)){
    echo '您好!' . $_GET['username'].'欢迎登录xxx系统!'.'<br>';
    echo 'sex:'.$_GET['sex'],'age:' . $_GET['age'];
}
?>
<form method="post" action=""> 
    姓名:<input type="text" name="username">
    性别:<input type="text" name="sex">
    年龄:<input type="text" name="age">
    <input type="submit" name="Submit" value="提交">
</form>

如果有get和post同时存在,并且get和post传递的名字是一样的,这时候通过$_REQUET获取的数据是什么?,这取决于php.ini中的设置。默认设置如下:

request_order = "GP"  # 先获取GET,再获取POST值
<?php
if(!empty($_REQUEST)){
    echo '您好!' . $_REQUEST['username'].'欢迎登录xxx系统!'.'<br>';
    echo 'sex:'.$_REQUEST['sex'],'<br>age:' . $_REQUEST['age'];
}
?>
<form method="post" action="./formtest.php?username=1">
    姓名:<input type="text" name="username">
    性别:<input type="text" name="sex">
    年龄:<input type="text" name="age">
    <input type="submit" name="Submit" value="提交">
</form>

在这里插入图片描述

2.1 复选框值的传递

当存在多个复选框时,name属性的值需要加上[],表示这是一个数组,以下代码中的hobby就是一个数组,我们可以用implode函数将数组转换成字符串。

<?php
if(isset($_POST['button'])) {
    echo '姓名:'.$_POST['username'].'<br>';
    echo '密码:'.$_POST['pwd'].'<br>';
    echo '性别:'.$_POST['sex'].'<br>';
    echo '爱好:',isset($_POST['hobby'])?implode(',',$_POST['hobby']):'没有爱好','<br>'; //implode — 将一个一维数组的值转化为字符串
    echo '籍贯:'.$_POST['jiguan'],'<br>';
    echo '留言:'.$_POST['words'];
}
?>
<form method="post" action="">
    姓名: <input type="text" name="username"> <br/>
    密码: <input type="password" name="pwd"> <br/>
    性别: <input type="radio" name="sex" value='1' checked><input type="radio" name="sex" value='0'><br/>
    爱好:
    <input type="checkbox" name="hobby[]" value='健身'>健身
    <input type="checkbox" name="hobby[]" value='画画'>画画
    <input type="checkbox" name="hobby[]" value='听歌'>听歌
    <input type="checkbox" name="hobby[]" value='跳舞'>跳舞 <br/>
    籍贯:
    <select name="jiguan">
        <option value="021">四川</option>
        <option value="010">江苏</option>
    </select> <br>
    留言: <textarea name="words" rows="5" cols="30"></textarea> <br/>
    <input type="submit" name="button" value="提交">
</form>

在这里插入图片描述

2.2 get,post,request如何选?

那么开发中post和get如何选则呢?
若符合下列任一情况,则用POST方法:

  • 请求的结果有持续性的副作用,副作用指的是对数据进行了修改。例如,数据库内添加新的数据行。
  • 若使用GET方法,则表单上收集的数据可能让URL过长。
  • 要传送的数据不是采用7位的ASCII编码。

若符合下列任一情况,则用GET方法:

  • 请求是为了查找资源,HTML表单数据仅用来帮助搜索。
  • 请求结果无持续性的副作用。
  • 收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符。

简单来说就是,需要读取数据可以选get,修改数据等操作用post,敏感的数据用post,当然具体情况需要具体对待。

对于request,request获取效率低,尽可能不要使用,除非提交的类型不确定的情况下才使用。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值