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

文章目录

  • 一、表单用来干什么
  • 二、创建表单
  • 三、GET和POST交互方式
  • 四、数组方式表单提交
  • 五、GET和POST的区别


一、表单用来干什么

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


二、创建表单

一个完整的表单是由表单域和表单控件组成的。其中,表单域由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-studytitle>
	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-studytitle>
	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"> 跑步

			
			<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产生两个。


你可能感兴趣的:(web安全,PHP,php,web安全)