PHP 学习笔记二表单表单处理表单验证表单实例总结Word格式.docx
- 文档编号:12942481
- 上传时间:2022-09-30
- 格式:DOCX
- 页数:12
- 大小:81.21KB
PHP 学习笔记二表单表单处理表单验证表单实例总结Word格式.docx
《PHP 学习笔记二表单表单处理表单验证表单实例总结Word格式.docx》由会员分享,可在线阅读,更多相关《PHP 学习笔记二表单表单处理表单验证表单实例总结Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
何时使用GET?
通过GET方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在URL中)。
GET对所发送信息的数量也有限制。
限制在大于2000个字符。
不过,由于变量显示在URL中,把页面添加到书签中也更为方便。
GET可用于发送非敏感的数据。
何时使用POST?
通过POST方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入HTTP请求的主体中),并且对所发送信息的数量也无限制。
此外POST支持高阶功能,比如在向服务器上传文件时进行multi-part二进制输入。
不过,由于变量未显示在URL中,也就无法将页面添加到书签。
PHP表单验证
PHP表单验证实例
文本字段
ame、email和website属于文本输入元素,comment字段是文本框。
HTML代码是这样的:
Name:
<
inputtype="
text"
name="
name"
>
E-mail:
email"
Website:
website"
Comment:
textareaname="
comment"
rows="
5"
cols="
40"
<
/textarea>
单选按钮
gender字段是单选按钮,HTML代码是这样的:
Gender:
radio"
gender"
value="
female"
Female
male"
Male
表单元素
表单的HTML代码是这样的:
formmethod="
post"
action="
?
phpechohtmlspecialchars($_SERVER["
PHP_SELF"
]);
"
当提交此表单时,通过method=”post”发送表单数据。
什么是$_SERVER[“PHP_SELF”]变量?
$_SERVER["
]是一种超全局变量,它返回当前执行脚本的文件名。
因此,$_SERVER["
]将表单数据发送到页面本身,而不是跳转到另一张页面。
这样,用户就能够在表单页面获得错误提示信息。
什么是htmlspecialchars()函数?
htmlspecialchars()函数把特殊字符转换为HTML实体。
这意味着<
和>
之类的HTML字符会被替换为&
lt;
和&
gt;
。
这样可防止攻击者通过在表单中注入HTML或JavaScript代码(跨站点脚本攻击)对代码进行利用。
关于PHP表单安全性的重要提示
$_SERVER[“PHP_SELF”]变量能够被黑客利用!
如果您的页面使用了PHP_SELF,用户能够输入下划线然后执行跨站点脚本(XSS)。
提示:
跨站点脚本(Cross-sitescripting,XSS)是一种计算机安全漏洞类型,常见于Web应用程序。
XSS能够使攻击者向其他用户浏览的网页中输入客户端脚本。
假设我们的一张名为“test_form.php”的页面中有如下表单:
phpecho$_SERVER["
];
现在,如果用户进入的是地址栏中正常的URL:
“
test_form.php"
到目前,一切正常。
不过,如果用户在地址栏中键入了如下URL:
在这种情况下,上面的代码会转换为:
/>
script>
alert('
hacked'
)<
/script>
这段代码加入了一段脚本和一个提示命令。
并且当此页面加载后,就会执行JavaScript代码(用户会看到一个提示框)。
这仅仅是一个关于PHP_SELF变量如何被利用的简单无害案例。
您应该意识到<
标签内能够添加任何JavaScript代码!
黑客能够把用户重定向到另一台服务器上的某个文件,该文件中的恶意代码能够更改全局变量或将表单提交到其他地址以保存用户数据,等等。
如果避免$_SERVER[“PHP_SELF”]被利用?
通过使用htmlspecialchars()函数能够避免$_SERVER[“PHP_SELF”]被利用。
表单代码是这样的:
现在,如果用户试图利用PHP_SELF变量,会导致如下输出:
test_form.php/"
无法利用,没有危害!
通过PHP验证表单数据
我们要做的第一件事是通过PHP的htmlspecialchars()函数传递所有变量。
在我们使用htmlspecialchars()函数后,如果用户试图在文本字段中提交以下内容:
location.href('
'
代码不会执行,因为会被保存为转义代码,就像这样:
&
script&
)&
/script&
现在这条代码显示在页面上或e-mail中是安全的。
在用户提交该表单时,我们还要做两件事:
(通过PHPtrim()函数)去除用户输入数据中不必要的字符(多余的空格、制表符、换行)
(通过PHPstripslashes()函数)删除用户输入数据中的反斜杠(\)
接下来我们创建一个检查函数(相比一遍遍地写代码,这样效率更好)。
我们把函数命名为test_input()。
现在,我们能够通过test_input()函数检查每个$_POST变量,脚本是这样的:
php
//定义变量并设置为空值
$name=$email=$gender=$comment=$website="
;
if($_SERVER["
REQUEST_METHOD"
]=="
POST"
){
$name=test_input($_POST["
$email=test_input($_POST["
$website=test_input($_POST["
$comment=test_input($_POST["
$gender=test_input($_POST["
}
functiontest_input($data){
$data=trim($data);
$data=stripslashes($data);
$data=htmlspecialchars($data);
return$data;
请注意在脚本开头,我们检查表单是否使用$_SERVER[“REQUEST_METHOD”]进行提交。
如果REQUEST_METHOD是POST,那么表单已被提交-并且应该对其进行验证。
如果未提交,则跳过验证并显示一个空白表单。
PHP表单验证-必填字段
本节展示如何制作必填输入字段,并创建需要时所用的错误消息。
PHP-输入字段
从上一节中的验证规则中,我们看到“Name”,“E-mail”以及“Gender”字段是必需的。
这些字段不能为空且必须在HTML表单中填写。
在上一节中,所有输入字段都是可选的。
在下面的代码中我们增加了一些新变量:
$nameErr、$emailErr、$genderErr以及$websiteErr。
这些错误变量会保存被请求字段的错误消息。
我们还为每个$_POST变量添加了一个ifelse语句。
这条语句检查$_POST变量是否为空(通过PHPempty()函数)。
如果为空,则错误消息会存储于不同的错误变量中。
如果不为空,则通过test_input()函数发送用户输入数据:
$nameErr=$emailErr=$genderErr=$websiteErr="
if(empty($_POST["
])){
$nameErr="
Nameisuired"
}else{
}
$emailErr="
Emailisrequired"
$website="
$comment="
$genderErr="
Genderis
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PHP 学习笔记二表单表单处理表单验证表单实例总结 学习 笔记 表单 处理 验证 实例 总结