首页 > 代码库 > (基础篇)PHP与Web页面交互
(基础篇)PHP与Web页面交互
PHP与Web页面交互是实现PHP网站与用户交互的重要手段。在PHP中提供了两种与Web页面交互的方法,一种是通过Web表单提交数据,另一种是通过URL参数传递。
这里我们将详细讲解表单的相关知识,为以后学习PHP页面交互做好铺垫。
1 、创建表单
Web表单的功能是让浏览者和网站有一个互动的平台。Web表单主要用来在网页中发送数据到服务器,如提交注册信息时需要使用表单。当用户填写完信息后执行提交(submit)操作,于是将表单中的数据从客户端的浏览器传送到服务器端,经过服务器端PHP程序进行处理后,再将用户所需要的信息传递回客户端的浏览器上,从而获得用户信息,使PHP与Web表单实现交互。使用<form>元素,在HTML标记间插入表单元素,即可创建一个表单。
代码片段
<form name="form_name" method="method" action="url" enctype="value" target="target_win" id="id">
……
</form >
属性 |
说明 |
name |
表单名 |
method |
设置表单的提交方式,即GET或则POSt(GET方法将表单内容附加在URL地址后面。POST方法将表单中的信息作为一个数据发送到服务器处理程序中,在浏览器的地址栏不显示提交的信息。Method默认为get) |
action |
设置表单数据提交的URL(相对位置或则绝对位置) |
enctype |
指定数据传送到服务器时浏览器使用的编码类型(用于对表单内容进行编码的 MIME 类型。) |
target |
设置返回信息的显示格式 |
application/x-www-form-urlencoded 默认的MIME类型,表示表单数据应该被编码成一个长串。
Multipart/form-data:上传文件专用类型,表示将每一个编码作为一个独立的部分使用。
Text/plain:将表单数据提交给一个电子邮件地址,数据以纯文本形式进行编码,其中不含任何控件或格式字符。
target属性值:
<form>标记中target属性的设置,可以控制提交页在窗口中的打开方式。
_blank:将返回页面信息显示在新的窗口中。
_parent:将返回信息显示在父级窗口中。
_self:将返回信息显示在当前窗口中。
_top:将返回信息显示在顶级窗口中。
在使用form表单时,必须要指定其行为属性action,它指定表单提交数据的处理页。GET方法是将表单内容附加在URL地址后面;POST方法是将表单中的信息作为一个数据块发送到服务器上的处理程序中,在浏览器的地址栏不显示提交的信息。method属性默认为GET方法。
2 、认识表单元素
表单由表单元素组成。常用的表单元素有以下几种标记:输入域标记<input>、选择域标记<select>和<option>、文本域标记<textarea>等。下面分别进行介绍。
2.1 输入域标记<input>
输入域标记<input>是表单中最常用的标记之一。常用的文本域、按钮、单选按钮及复选框等构成了一个完整的表单。
参数name是指输入域的名称,参数type是指输入域的类型。在<input type=" ">标记中一共提供了10种类型的输入区域,用户所选择使用的类型由type属性决定。type属性取值及举例如表所示。
2.2 选择域标记<select>和<optiom>
通过选择域标记<select>和<option>可以建立一个列表或者菜单。菜单节省空间,正常状态下只能看到一个选项,单击按钮打开菜单后才能看到全部的选项。列表可以显示一定数量的选项,如果超出了这个数量,会自动出现滚动条,浏览者可以通过拖动滚动条来查看各选项。
语法:
参数name表示选择域的名称;参数size表示列表的行数;参数value表示菜单选项值;参数multiple表示以菜单方式显示数据,省略则以列表方式显示数据。
2.3 文本域标记<textarea>
文本域标记<textarea>用来制作多行的文本域,可以在其中输入更多的文本。
参数name表示文本域的名称;rows表示文本域的行数;cols表示文本域的列数(这里的rows和cols以字符为单位);value表示文本域的默认值。warp用于设定显示和送出时的换行方式,值为off表示不自动换行;值为hard表示自动按Enter键换行,换行标记一同被发送到服务器,输出时也会换行;值为soft表示自动按Enter键换行,换行标记不会被发送到服务器,输出时仍然为一列。
3 、在Web页面中创建表单
在一个Web页面中,允许有多个表单,在编写代码时,由表单的name和ID属性值对各个表单进行区分。
4 、在Web页面中嵌入PHP脚本
在Web页中嵌入PHP脚本的方法有两种:一种是直接在HTML标记中添加"<?php?>"PHP标记符,写入PHP脚本;另二种是对表单元素的value属性进行赋值。下面分别对这两种方法进行讲解。
4.1 直接添加标记符
在Web编码过程中,通过在HTML标记中添加PHP脚本标记"<?php ?>"来嵌入PHP脚本,两个标记之间的所有文本都会被解释为PHP语言,而标记之外的任何文本都会被认为是普通的HTML。
4.2 为表单赋值
在Web程序开发过程中,为了使表单元素在运行时有默认值,通常需要对表单元素的value属性进行赋值。下面通过具体的实例讲解赋值的方法。
5 、提交表单数据
交表单数据有两种方法:POST方法和GET方法。采用哪种方法提交表单数据由<form>表单的method属性值决定。下面详细讲解这两种提交表单数据的方法。
5.1 POST方法
应用POST方法提交表单数据的方法非常简单,只需要将<form>表单中的method属性值设置成"POST"即可。POST方法不依赖于URL,不会将传递的参数值显示在地址栏中。另外,POST方法可以没有限制地传递数据到服务器,所有提交的信息在后台传输,用户在浏览器端是看不到这一过程的,安全性高。所以,POST方法比较适合用于发送一个保密的(如信用卡号)或者比较大量的数据到服务器。
<body>
<form name="example" method="post"action="success.php">
姓名:<inputtype="text" name="name"/> <br/>
密码 :<input type="password" name="password"/>
<inputtype="submit" value="http://www.mamicode.com/提交"/>
</form>
</body>
5.2 GET方法
GET方法是<form>表单中method属性的默认方法。使用GET方法提交的表单数据被附加到URL上,并作为URL的一部分发送到服务器端。在程序的开发过程中,由于GET方法提交的数据是附加到URL上发送的,因此,在URL的地址栏中将会显示"URL+用户传递的参数"。
<body>
<form name="example" method="get"action="success.php">
姓名:<inputtype="text" name="name"/> <br/>
密码 :<input type="password" name="password"/>
<inputtype="submit" value="http://www.mamicode.com/提交"/>
</form>
</body>
显而易见,这种方法会将参数暴露无疑。如果用户传递的参数是非保密性的参数(如id=8),那么采用GET方法传递数据是可行的;如果用户传递是保密性的参数(如用户登录的密码,或者信用卡号等),这种方法就会不安全。解决该问题是将表单的method指定的GET方法改为POST方法。
注意:若要使用GET方法发送表单,URL的长度应限制在1MB字符以内。如果发送的数据量太大,数据将被截断,从而导致意外或失败的处理结果。
6 、POST方法与GET方法的使用区别
在浏览器中向服务器发送表单数据的方法有两种,即POST方法和GET方法。这两种方法在Web页面的应用上有着本质的不同。
POST方法发送变量数据时,对于用户而言是保密性质的。从HTTP协议来看,数据附加于header的头信息中,用户不能随意修改,这对于Web应用程序而言,安全性要好得多,而且使用POST方法向Web服务器发送数据的大小不受限制。
GET方法是在访问URL时使用浏览器地址栏传递值。GET方法方便直观,但缺点是访问该网站的用户也可以修改URL串后发送给服务器,GET传递的字符串长度有一定的限制,不能超过250个字符,如果超长,浏览器会自动截取,导致数据丢失或程序运行出错。另外,GET方法不支持ASCII字符之外的任何字符,如果包含有汉字或其他非ASCII字符,需要应用PHP的内置函数将参数值转换成其他编码格式进行传递。
因此,在网站开发过程中,程序员应根据实际需要灵活地选择POST方法和GET方法来提交表单数据。
7 、POST方法与GET方法的使用区别
PHP的全局变量有3种:$_POST[ ]、$_GET[ ]和$_SESSION[ ],分别用于获取表单、URL、Session变量的值。这3种方法在使用上有很大的区别,下面分别进行详细介绍。
7.1 $_POST[ ]全局变量
使用PHP的$_POST[]全局变量可以获取表单元素的值。在实际程序开发过程中,使用哪种方法获取数据资源,是由<form>表单元素的method属性决定的。如果表单中method属性指定的是用POST方法进行数据传递,那么在处理数据时就应该使用$_POST[ ]全局变量获取表单数据。
通过$_POST[ ]全局变量获取表单数据,实际上就是获取不同的表单元素的数据。<form>标签中的name是所有表单元素都具备的属性,即为这个表单元素的名称,在使用时需要使用name属性来获取相应的value属性值。所以添加的所有控件必须定义其name属性值,另外,为了避免获取的数据出现错误,表单元素在命名上尽可能不要重复,尽量使用具有一定意义的英文缩写或拼音命名。
7.2 $_GET[ ]全局变量
PHP使用$_GET[]全局变量获取通过GET方法传递的值,使用格式为:
$_GET[name]
例如,创建一个表单,设置method属性值为GET,添加一个文本框,name为user,获取表单元素值的代码如下。
注意:PHP可以应用$_POST[]或$_GET[]全局变量来获取表单元素的值。但值得注意的是,获取的表单元素名称区分字母大小写。如果在编写Web程序时忽略字母大小写,那么在程序运行时将获取不到表单元素的值或弹出错误提示信息。
7.3 $_SEESION[ ]全局变量
使用$_SEESION[]变量可以跨页获取变量的值,格式为:
$_SEESION[name]
在PHP动态页中,可以将变量或者表单元素的值赋值给$_SEESION[]全局变量,进而实现变量值或者表单元素值的跨页传递。
例如,建立一个表单,添加一个文本框,命名为user,应用$_SEESION[]全局变量获取表单元素的代码如下。
代码片段
$user=$_SESSION["user"]
应用$_SEESION[]传参的方法获取的变量值,保存之后任何页面都可以使用。但是这种方法很耗费系统资源,建议读者慎重使用。
(基础篇)PHP与Web页面交互