本文内容
讲述了php实现表单中数据的提交,服务器接受数据
用php实现表单提交数据有两种方式:get方式和post方式。
<form method="get" action="">
<input type="text" name="username" >
form>
if(!empty($_POST)){
echo '您好!' . $_POST['username'].'欢迎登录xxx系统!';
}
?>
<form method="post" action="">
姓名:<input type="text" name="username">
</form>
从安全性上来讲,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>
2、JS跳转
<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>
3、PHP跳转
header('location:index.php?name=tom&age=22')
三种方式:
$_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>
当存在多个复选框时,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>
那么开发中post和get如何选则呢?
若符合下列任一情况,则用POST方法:
若符合下列任一情况,则用GET方法:
简单来说就是,需要读取数据可以选get,修改数据等操作用post,敏感的数据用post,当然具体情况需要具体对待。
对于request,request获取效率低,尽可能不要使用,除非提交的类型不确定的情况下才使用。