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

文章目录

  • 0x01 表单提交数据的两种方式
    • 1.1通过get方式提交数据
    • 1.2通过post方式提交数据
    • 1.3 post和get的区别
  • 0x02 服务器接收数据的三种方式
    • 2.1 复选框值的传递
    • 2.2 get,post,request如何选?

本文内容

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

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

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

1.1通过get方式提交数据

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

在这里插入图片描述

1.2通过post方式提交数据



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

php实现表单提交数据,服务器接收数据_第1张图片

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方式提交的数据-->

    if(!empty($_POST)){
        echo '您好!' . $_POST['username'].'欢迎登录xxx系统!'.'
'
; echo 'sex:'.$_POST['sex'],'
age:'
. $_POST['age']; } ?> <!--接受get方式提交的数据--> if(!empty($_GET)){ echo '您好!' . $_GET['username'].'欢迎登录xxx系统!'.'
'
; 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值

if(!empty($_REQUEST)){
    echo '您好!' . $_REQUEST['username'].'欢迎登录xxx系统!'.'
'
; echo 'sex:'.$_REQUEST['sex'],'
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>

php实现表单提交数据,服务器接收数据_第2张图片

2.1 复选框值的传递

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


if(isset($_POST['button'])) {
    echo '姓名:'.$_POST['username'].'
'
; echo '密码:'.$_POST['pwd'].'
'
; echo '性别:'.$_POST['sex'].'
'
; echo '爱好:',isset($_POST['hobby'])?implode(',',$_POST['hobby']):'没有爱好','
'
; //implode — 将一个一维数组的值转化为字符串 echo '籍贯:'.$_POST['jiguan'],'
'
; 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>

php实现表单提交数据,服务器接收数据_第3张图片

2.2 get,post,request如何选?

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

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

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

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

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

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

你可能感兴趣的:(php实现表单提交数据,服务器接收数据)