表单的概念在生活中很常见,就像是问卷调查表一样,别人先把问卷发给你,你照着问卷的要求填写,完事过后再将填完的问卷发给别人,从而达到一个将别人需要的信息传递给别人的一种方式。
传统的网页大多数的作用都是展示数据,就是将信息传递给用户。而在现代化的 web 开发中,非常注重信息交互,所以表单也随处可见,只是形式上变成网页,性质上还是一宏碁笔记本模一样的。主要的作用任然是 收集指定的用户信息。
html 中有一个专门用于提交数据的标签: <form> ,通过这个标签可以很容易的收集用户输入.
form 标签有两个必要属性: action:表单提交地址(填完了,交给谁) method:表单以什么方式提交
例如,我们需要在登录界面上收集用户输入的用户名和密码:
<!doctypehtml><htmllang="en"><head><metachart="utf‐8"><title>登录</title></head><body><formaction="login.php"method="post"><div><labelfor="urname">用户名</label><inputtype="text"id="urname"name="urname"></div><div><labelfor="password">密码</label><inputtype="passwo扬眉吐气rd"id="password"name="password"></div><buttontype="submit">登录</button></孝敬父母form></body></html>
按照目前的情况,用户第一次请求得到这个表单页面,填写完表单内容,点击登录,表单会自动发送到login.php ,剩下的问题就是要考虑如何在 login.php 中获取到用户提交过来的内容.
php 中有三个超全局变量专门用来获取表单提交内容: $_get :用于获取以 get 方式提交的内容 $_post :用于获取以 post 方式提交的内容 $_request :用于获取 get 或 post 方式提交的内容
借助 $_post 或者 $_request 就可以获取到表单提交的内容:
<?php//获取表单提交的用户名和密码echo'用户名:'.$_request['urname'];echo'密码:'.$_request['password'];
action 提交地址指的是这个表单填写完成过后点击提交,发送请求的请求地址是什么。
从便于维护的角度考虑,一般我们最常见的都是提交给当前文件,然后在当前文件中判断是否是表单提交请求:
<?phpif($_rver['request_method']==='post'){//表单提交请求}
另外,建议使用 $_rver[‘php_lf’] 动态获取当前页面访问路径,这样就不用因为文件重命名或者网站目录结构调整而修改代码了:
<!‐‐这样写死action地址,当文件重命名就需要修改代码‐‐><formaction="/foo/login.php"><!‐‐...‐‐></form><!‐‐通过`$_rver['php_lf']`获取路径,可以轻松避免这个问题‐‐><formaction="<?phpecho$_rver['php_lf'];?>"><!‐‐...‐‐></form>
method 可以用于设置表单提交的方式,目前我们所认识的就是最常见两种表单提交方式: get 和 post 。
从效果上来看,两者都可以将数据提交到服务端,但是从实现提交的原理上两者有很大的不同:
get
表单数据是通过 url 中的 ? 参数传递到服务端的
可以在地址栏中看到提交的内容
数据长度有限制,因为 url 地址长度有限(2000个字符)
post
表单数据是通过请求体传递到服务端的,我们在界面上看不到
可以提交任何类型的数据,包括文件
由于界面上看不见,浏览器也不储存,所以更安全
至于什么情况下应该选用哪种方式,这个需要结合业务场景和这两种方式各自的特点来决定,没有绝对的答案,只能给出一些原则:
绝不能使用 get 来发送密码或其他敏感信息!!!
应该想清楚这次请求到底主要是去拿东西,还是去送东西
至于表单元素中的文本框文本域一类的元素,都是直接将元素的 name 属性值作为键,用户填写的信息作为值,发送到服务端。但是表单元素中还有一些比较特殊的表单元素需要单独考虑:
<!‐‐最终只会提交选中的那一项的value‐‐><inputtype="radio"name="gender"value="male"><inputtype="radio"name="gender"value="female">
<!‐‐没有设置value的checkbox选中提交的value是on‐‐><inputtype="checkbox"name="agree"><!‐‐设置了value的checkbox选中提交的是value值‐‐><inputtype="checkbox"name="agree"value="true">
如果需要同时提交多个选中项,可以在 name 属性后面 跟上 [] :
<inputtype="checkbox"name="funs[]"id=""value="football"><inputtype="checkbox"name="funs[]"id=""value="basketball"><inputtype="checkbox"name="funs[]"id=""value="worldpeace">
最终提交到服务端,通过 $_post 接收到的是一个索引数组.
<lectname="subject"><!‐‐设置value提交value‐‐><optionvalue="1">语文</option><!‐‐没有设置value提交innertext‐‐><option>数学</option></lect>
type 属性为 file 的 input 元素可以通过表单提交文件(上传文件),服务端 php 可以通过 $_files 获取上传的文件信息。
<?php//如果选择了文件$_files['file']['error']=>0//详细的错误码说明:/d/file/titlepic/pprearray(1){[avatar]=>array(5){[name]=>string(17)demo.jpg"["type"]=>string(10)"image/jpeg"["tmp_name"]=>string(27)"c:\windows\temp\php786c.tmp"["error"]=>int(0)["size"]=>int(29501)}}
本文发布于:2023-04-06 21:34:51,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/b441522862784b398190bbcb6c5b23cd.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:php中的form表单.doc
本文 PDF 下载地址:php中的form表单.pdf
留言与评论(共有 0 条评论) |