您好,登录后才能下订单哦!
这篇文章主要介绍“PHP表单输入与验证的方法是什么”,在日常操作中,相信很多人在PHP表单输入与验证的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP表单输入与验证的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
在之前的文章中我们已经了解了PHP的基础,其中就有$_GET
和 $_POST
变量,它们用来检索表单中的信息,其中需要我们注意的知识点就是PHP表单用户输入和表单验证。那接下来我们就来看一下PHP中表单输入与表单验证的相关知识吧。
PHP表单和用户输入
想要去了解PHP表单和用户输入,首先我们要明白什么是表单。Web表单准确来说算是一个互动平台,主要的功能就是让浏览者和网站有一个互动的平台。表单主要就是在网页中用来发送数据到服务器。
例如,注册信息时使用到的表单,当你填写完信息时需要提交,这时候提交就是将你注册时表单上的内容从客户端浏览器传送到服务器端,再经过PHP程序进行处理后,再将用户所需要的信息传递回到客户端浏览器上,通过获取用户的信息,使得PHP与Web表单实现交互。就是提供了这么一个互动的平台。
接下来我们通过示例来看一下表单,示例如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>亿速云</title> </head> <body> <form action="form.php" method="post"> 名字: <input type="text" name="fname"><br> 年龄: <input type="text" name="age"><br> <input type="submit" value="提交"> </form> </body> </html>
其中需要我们注意的是表单属于HTML的知识,更多的相关知识,大家可以点击《HTML教程》进行学习,上述示例的运行结果:
这便是我们所说的表单,那么我们在其中填写的信息也就是表单信息会发送到哪里呢?当我们点击提交的时候,表单中的数据就会以POST的形式,发送到form.php这个页面。
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 echo "欢迎你:".$_POST["fname"] ."<br/>"; echo "你的年龄是:".$_POST['age']; ?>
我们发送到from.php的运行结果如下:
当用户输入完成后,这时候就需要对表单进行验证了,应该在任何可能的时候通过客户端脚本对用户输入进行验证。浏览器验证速度更快,并且可以减轻服务器的负载。
如果用户输入需要插入数据库,您应该考虑使用服务器验证。在服务器验证表单的一种好的方式是,把表单传给它自己,而不是跳转到不同的页面。这样用户就可以在同一张表单页面得到错误信息。用户也就更容易发现错误了。那么接下来我们一起来看一下表单验证的相关知识吧。
PHP表单验证
在处理PHP表单时我们需要考虑安全性。我们将展示PHP表单数据安全处理,为了防止黑客及垃圾信息我们需要对表单进行数据安全验证。接下来我们通过实例来看一下表单中的必须与可选文本字段,单选按钮,及提交按钮。
示例如下:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>PHP.cn</title> </head> <body> <h3>PHP 表单验证实例</h3> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 名字: <input type="text" name="name" value=""> <br> E-mail: <input type="text" name="email" value=""> <br> 网址: <input type="text" name="website" value=""> <br> 备注: <textarea name="comment" rows="5" cols="40"></textarea> <br> 性别: <input type="radio" name="gender" value="female">女 <input type="radio" name="gender" value="male">男 <br> <input type="submit" name="submit" value="提交"> </form> </body> </html>
输出结果:
其中我们需要注意的是不同的字段有不同的验证规则,上述示例中不同字段的验证规则如下:
名字的验证规则是必须的,并且只能包含字母和空格。E-mail的验证规则是必须的,其中必须是一个有效的电子邮件地址(包含'@'和'.')。网址的验证规则的是可选的,并且如果存在,它必须包含一个有效的URL。备注的验证规则是可选的,多行输入字段。性别的验证规则是必须的,必须选择一个。
通过上述示例我们再来看一下其中用到的知识:
$_SERVER["PHP_SELF"]
变量
$_SERVER["PHP_SELF"]
是一种超全局变量,它返回当前执行脚本的文件名。因此,$_SERVER["PHP_SELF"]
将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。
htmlspecialchars()
函数
htmlspecialchars()
函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 < 和 > 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。
其中我们需要注意的是:
$_SERVER["PHP_SELF"]
变量能够被黑客利用,如何避免 $_SERVER["PHP_SELF"]
被利用?
$_SERVER["PHP_SELF"]
可以通过 htmlspecialchars()
函数来避免被利用。
form 代码如下所示:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。现在如果用户想利用 PHP_SELF 变量, 结果将输出如下所示:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
尝试该漏洞失败!
通过PHP验证表单数据
我们要做的第一件事是通过 PHP 的 htmlspecialchars()
函数传递所有变量。在用户提交该表单时,我们还要做两件事:
首先通过 PHP trim()
函数去除用户输入数据中不必要的字符,比如多余的空格、制表符、换行等,然后通过 PHP stripslashes()
函数删除用户输入数据中的反斜杠(\
)。接下来我们创建一个检查函数,我们把函数命名为 test_input()
。最后我们能够通过 test_input()
函数检查每个 $_POST
变量。
我们将验证程序可以放到上述示例中去,示例如下:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>亿速云(php.cn)</title> </head> <body> <?php // 定义变量并默认设置为空值 $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $website = test_input($_POST["website"]); $comment = test_input($_POST["comment"]); $gender = test_input($_POST["gender"]); } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <h3>PHP 表单验证实例</h3> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 名字: <input type="text" name="name"> <br><br> E-mail: <input type="text" name="email"> <br><br> 网址: <input type="text" name="website"> <br><br> 备注: <textarea name="comment" rows="5" cols="40"></textarea> <br><br> 性别: <input type="radio" name="gender" value="female">女 <input type="radio" name="gender" value="male">男 <br><br> <input type="submit" name="submit" value="提交"> </form> <?php echo "<h3>您输入的内容是:</h3>"; echo $name; echo "<br>"; echo $email; echo "<br>"; echo $website; echo "<br>"; echo $comment; echo "<br>"; echo $gender; ?> </body>
输出结果:
其中我们需要注意的是:
我们在执行以上脚本时,会通过$_SERVER["REQUEST_METHOD"]
来检测表单是否被提交 。如果 REQUEST_METHOD
是 POST, 表单将被提交 - 数据将被验证。如果表单未提交将跳过验证并显示空白。在以上实例中使用输入项都是可选的,即使用户不输入任何数据也可以正常显示。
到此,关于“PHP表单输入与验证的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。