网络安全入门学习第十七课——PHP表单交互


一、表单用来干什么

表单的主要功能:就是在网页上用于输入信息的区域,收集用户输入的信息,并将其提交给后端的服务器进行处理,实现用户与服务器的交互。
例如:购物结算、信息搜索等都是通过表单实现的。


二、创建表单

一个完整的表单是由表单域和表单控件组成的。其中,表单域由form标记定义,用于实现用户信息的收集和传递。

<form action="form.php" method="post" enctype="multipart/form-data">
   <!-- 各种表单控件 -->
   <!-- _POST _GET -->
</form>

<!-- -->是HTML的注释标记,用于解释和说明。

属性名称说明
action指定接收并处理表单数据的服务器程序的URL地址
method设置表单数据的提交方式,常用的有GET和POST方式,默认值为GET
enctype规定发送到服务器之前应该如何对表单数据进行编码

action属性的值可以是绝对路径、相对路径,若省略该属性则表示提交给当前文件进行处理。

GET方式传递的表单在URL地址栏中可见。相比GET方式,POST方式提交的数据是不可见的,在交互时相对安全。因此,通常情况下使用POST方式提交表单数据。

enctype属性的默认值为application/x-www-form-urlencoded,表示在发送表单数据前编码所有字符。除此之外还可以设置为multipart/form-data表示不进行字符编码,尤其是含有文件上传的表单必须使用该值;设置为text/plain表示将空格转换为“+”加号,但不对特殊字符编码。


三、GET和POST交互方式

当PHP收到来自浏览器提交的数据后,会自动保存到超全局变量中。

常见的超全局数组变量有$_POST、$_GET

通过POST方式提交的数据会保存到 $_POST 中

通过GET方式提交的数据会保存到 $_GET 中

例子:一次完整的表单数据交互

form表单页面,设置form表单提交方式为 post,action设置要提交到的页面地址:
<html>
	<head>
		<meta charset="utf-8">
		<title>php-study</title>
	</head>
	<body>

	<form action="welcome_post.php" method="post">
		名字: <input type="text" name="fname">
		年龄: <input type="text" name="age">
		<input type="submit" value="提交">
	</form>
	</body>
</html>

post提交接收页面 welcome_post.php:
<?php
header("Content-type:text/html;charset=utf-8");
?>
欢迎<?php echo $_POST["fname"]; ?>!<br>
你的年龄是 <?php echo $_POST["age"]; ?>岁。

四、数组方式表单提交

<html>
	<head>
		<meta charset="utf-8">
		<title>php-study</title>
	</head>
	<body>

		<form action="welcome_post_array.php" method="post">
		<!--代表一位数组-->
			<input type="checkbox" name="hobby[]" value="swimming"> 游泳
			<input type="checkbox" name="hobby[]" value="reading"> 读书
			<input type="checkbox" name="hobby[]" value="running"> 跑步

			<!--注意form数组名字应该一样的,比如下面篮球不会放在hobby数组里而是放在hobby1数组里-->
			<input type="checkbox" name="hobby1[]" value="basketball"> 打篮球

			名字: <input type="text" name="fname">
			年龄: <input type="text" name="age">
			<input type="submit" value="提交">
			<textarea name="tr"></textarea>
		</form>
	</body>
</html>

$POST中的hobby元素是一个索引数组,数组中的元素是用户所选复选框对应的value属性值。 当用户未选中任何复选框时,$POST数组中将不存在hobby元素。

//welcome_post_array.php

<?php
header("Content-type:text/html;charset=utf-8");
?>
欢迎<?php echo $_POST["fname"];?>!<br>
你的年龄是 <?php echo $_POST["age"];?>岁。
你的爱好是: <?php print_r($_POST["hobby"],false);?>
你的textarea是: <?php echo nl2br($_POST["tr"]);?>

五、GET和POST的区别

1、post请求更安全;post请求不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中,get请求的是静态资源,则会缓存,如果是数据,则不会缓存。

2、post请求发送的数据更大,get请求有url长度限制。

3、post请求能发送更多的数据类型,get请求只能发送ASCII字符。

4、传参方式不同。

5、get产生一个TCP数据包;post产生两个。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值