(基础篇)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="提交"/>
</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="提交"/>
</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程序时忽略字母⼤⼩写,那么在程序运⾏时将获取不到表单元素的值或弹出错误提⽰信息。
html input type属性7.3 $_SEESION[ ]全局变量
使⽤$_SEESION[]变量可以跨页获取变量的值,格式为:
$_SEESION[name]
在PHP动态页中,可以将变量或者表单元素的值赋值给$_SEESION[]全局变量,进⽽实现变量值或者表单元素值的跨页传递。
例如,建⽴⼀个表单,添加⼀个⽂本框,命名为user,应⽤$_SEESION[]全局变量获取表单元素的代码如下。
代码⽚段
$user=$_SESSION["user"]
应⽤$_SEESION[]传参的⽅法获取的变量值,保存之后任何页⾯都可以使⽤。但是这种⽅法很耗费系统资源,建议读者慎重使⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论