在本教程中,我们将学习HTML表单是如何工作的,以及如何用PHP从HTML表单获取并处理数据。
HTML表单由可输入数据并将其提交给web服务器的HTML输入元素组成。这些输入元素包括文本输入框、密码框、复选框、单选按钮、文件选择组件、提交按钮等。
HTML表单由开始标记<form>开始,以结束标记</form>结束,如下所示:
<form>
</form>
<
form
action
=
"script.php"
method
"post"
>
</
这里,<form>标签有两个重要的属性:
要在PHP中从HTML表单读取数据,需要使用以下超全局变量之一:
$_GET
$_POST
$_REQUEST
下图是我们要创建的一个HTML联系人表单:
在contact表单中,我们将使用POST方法,因此需要从$_POST数组中读取表单数据。
例如,我们可以从$_POST数组中读取name字段值,如下所示:
[
'name'
]
我们应该始终不信任用户提交的数据, 每次都要验证用户提交给服务器的数据,以防止恶意用户试图入侵网站。PHP提供了一个非常方便的函数filter_var(),它不仅可以从数据中删除任何非法字符,还可以检查数据是否为有效形式。
以下示例演示如何从表单中的的“name”字段中删除任何非法字符:
<?php
if
(
] !=
''
){
$name
= filter_var(
],FILTER_SANITIZE_STRING);
}
要检查电子邮件的格式是否正确,可以使用下面的代码段:
$email
'email'
(!filter_var(
,FILTER_VALIDATE_EMAIL)){
// 无效的电子邮件地址
我们使用了两次filter_var()函数:
为了使表单更美观,我们使用了Twitter Bootstrap框架。https://getbootstrap.com/docs/3.4/css/
https://getbootstrap.com/docs/3.4/css/
</td>
define(
'MAIL_TO'
,
'webmaster@theITroad.com'
);
$errors
array
();
;
$subject
$message
/**
* 验证表单数据
* @return boolean 如果没有发生错误,则返回true,否则返回false
*/
function
validate_form() {
global
// 验证名字
) {
], FILTER_SANITIZE_STRING);
==
[] =
'名字无效'
else
{
'请输入名字'
// 验证邮箱
, FILTER_VALIDATE_EMAIL)) {
'电子邮箱无效'
'请输入电子邮箱'
// validate subject
'subject'
'标题无效'
'请输入标题'
// validate message
'message'
'输入的内容无效'
'请输入内容'
count
)) {
return
false;
true;
* 显示字段值
* @param string $fieldName
display_value(
$fieldName
echo
isset(
]) ?
] :
*
* @param array $errors array of errors
display_message(
(!isset(
'submit'
])) {
// 向用户显示消息
) === 0) {
?>
<div
class
"alert alert-success"
<p>谢谢你!您的信息已经发送。</p>
</div>
"alert alert-block alert-error fade in"
<p>发生了下列错误:</p>
<ul>
foreach
as
$error
"<li>$error</li>"
</ul>
* 开始表单处理
start_form() {
$mail_msg
// 如果用户提交了表单
(isset(
// 验证表单
(validate_form()) {
.=
'From: '
.
"\n"
'Email: '
'Message: '
// 发送电子邮件到MAIL_TO电子邮件地址
(!@mail(MAIL_TO,
'发送电子邮件失败'
// 开始表单处理
start_form();
<!DOCTYPE html>
<html>
<head>
<title>联系表单</title>
<link rel=
"stylesheet"
href=
"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css"
</head>
<body>
"container"
<form action=
"contact.php"
method=
"POST"
"form-horizontal"
<fieldset>
<legend>PHP联系表单演示</legend>
"control-group"
<label
for
"name"
"control-label"
>名字:</label>
"controls"
<input type=
"text"
name=
id=
value=
"<?php display_value('name') ?>"
"input-xlarge"
placeholder=
"Name"
/>
"email"
>邮箱:</label>
"<?php display_value('email') ?>"
"Email"
"subject"
>标题:</label>
"<?php display_value('subject') ?>"
"Subject"
"message"
>内容:</label>
<textarea rows=
"7"
cols=
"25"
><?php display_value(
) ?></textarea>
"submit"
"发送"
"btn"
"reset"
"重置"
</fieldset>
</body>
</html>
首先,我们定义了一个全局变量列表,我们可以在整个函数中使用:
'webmaster@example.com'
其次,在validate_form()函数中,我们检查所有的表单字段。如果发生任何错误,我们将在$errors全局数组中记录错误。
第三,如果字段值存在于$_POST数组中,则display_value()函数将显示字段值。我们使用display_value()函数来保留后续请求之间的字段值,以防发生错误。这有助于用户再次填写表单字段时能节省时间,。
第四,display_message()函数将根据$errors全局数组来决定是显示错误还是成功的消息。
第五,start_form()函数检查用户是否提交了表单。如果是,它将通过调用validate_form()函数来验证表单。如果一切正常,它将使用mail()函数发送电子邮件。
原文链接:https://codingdict.com/