实例讲解PHP表单
表单处理
GETvs.POST
1 GET和POST都创建数组(例如,array(key=>value,key2=>value2,key3=>value3,...))。此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据。
2 GET和POST被视作$_GET和$_POST。它们是超全局变量,这意味着对它们的访问无需考虑作用域-无需任何特殊代码,您能够从任何函数、类或文件访问它们。
3 传递方式
$_GET是通过URL参数传递到当前脚本的变量数组。
$_POST是通过HTTPPOST传递到当前脚本的变量数组。
(1)何时使用GET?
通过GET方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在URL中)。GET对所发送信息的数量也有限制。限制在大约2000个字符。
GET可用于发送非敏感的数据。
注释:绝不能使用GET来发送密码或其他敏感信息!
(2)何时使用POST?
通过POST方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入HTTP请求的主体中),并且对所发送信息的数量无限制。
此外POST支持高阶功能,比如在向服务器上传文件时进行multi-part二进制输入。
提示:开发者偏爱POST来发送表单数据。
表单验证
htmlspecialchars()函数
如果要将表单提交给页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。
表单的HTML代码是这样的:
">
(1)什么是$_SERVER["PHP_SELF"]变量?
$_SERVER["PHP_SELF"]是一种超全局变量,它返回当前执行脚本的文件名。
因此,$_SERVER["PHP_SELF"]将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。
(2)什么是htmlspecialchars()函数?
htmlspecialchars()函数把特殊字符转换为HTML实体。这意味着<和>之类的HTML字符会被替换为<和>,页面效果仍是<>。这样可防止攻击者通过在表单中注入HTML或JavaScript代码(跨站点脚本攻击)对代码进行利用。
如果没有htmlspecialchars()函数
hacker输入url:
http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E
表单处则会转换为:
典型反射xss
表单检查函数:
必填字段验证E-mail和URL
1.验证名字
以下代码展示的简单方法检查name字段是否包含字母和空格。如果name字段无效,则存储一条错误消息:
$name=test_input($_POST["name"]); if(!preg_match("/^[a-zA-Z]*$/",$name)){ $nameErr="只允许字母和空格!"; }
2.验证E-mail
以下代码展示的简单方法检查e-mail地址语法是否有效。如果无效则存储一条错误消息:
$email=test_input($_POST["email"]); if(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)){ $emailErr="无效的email格式!"; }
3.验证URL
以下代码展示的方法检查URL地址语法是否有效(这条正则表达式同时允许URL中的斜杠)。如果URL地址语法无效,则存储一条错误消息:
$website=test_input($_POST["website"]); if(!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/% =~_|]/i",$website)){ $websiteErr="无效的URL"; }
完成表单实例
PHP验证实例
*必需的字段 "> 姓名: *
电邮:*
网址:
评论:
以上就是PHP表单相关知识总结的详细内容,更多关于PHP表单的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。