使用 2020 年的最新技术怎么样?
表格
您可以直接在客户端验证 html 表单,以尽量减少发生的错误。为此,只需使用 html5 约束验证 api。
<form id="my-form" action="registration.php" method="post">
<label>
Username
<input type="text" name="username" value="" required>
</label>
<label>
Number
<input type="number" name="number" value="" required min="1" max="9999" step="1">
</label>
<input type="submit" name="submit" value="send">
</form>
如您所见,输入元素具有不同的类型属性。例如,我没有使用您的姓名和学生编号元素。第一个输入元素是用户名,因此我们使用文本输入元素。这个元素可以接受每个输入。第二个输入元素是数字类型。在这里您只能输入数字值。两个元素都具有 required 属性。如果不填写任何内容,您将无法提交表格。您必须输入用户名和号码。
使用 PHP 进行服务器端验证
由于我们有客户端验证,您必须再次验证服务器上接收到的数据。永远不要相信任何用户输入!在服务器上检索数据只是意味着用户填写了一些内容。这不是 cler,如果输入是你所期望的。
if (isset($_POST['submit'])) {
$valid = true;
$errorType = '';
if (!isset($_POST['username']) || !strlen(trim($_POST['username'])) {
$valid = false;
$errorType = 'username';
}
if (!isset($_POST['number']) || !intval($_POST['number'])) {
$valid = false;
$errorType = 'number';
}
if (!$valid) {
header('registration.php?error=' . $errorType);
exit();
}
}
上面显示的代码检查是否点击了提交按钮。如果是这样,则检查两个输入元素,如果它们不是空的。您可以在此处添加更多验证。在用户名的情况下,最小字符串长度是可行的。如果数据库中存在该号码,则可以对照数据库内容检查该号码。
在html中显示错误
由于我们使用 php 标头函数在重定向中定义了 GET 参数error,因此我们可以在标记中使用它。
<form id="my-form" action="registration.php" method="post">
<label>
Username
<input type="text" name="username" value="" required>
<?php if (isset($_GET['error']) && $_GET['error'] === 'username') :?>
<p>Yo! We need your username, dude!</p>
<?php endif; ?>
</label>
<label>
Number
<input type="number" name="number" value="" required min="1" max="9999" step="1">
<?php if (isset($_GET['error']) && $_GET['error'] === 'number') :?>
<p>Yeah ... entering a number is not that hard.</p>
<?php endif; ?>
</label>
<input type="submit" name="submit" value="send">
</form>
备择方案
有的。当您在表单元素中使用所需的属性时,您可以使用 JavaScript 来捕获 HTML5 约束验证 API 引发的错误。该 api 向您显示发生了什么错误,您可以显示有关发生的错误的更具体的错误消息。
另一种选择是 AJAX。如果约束验证 API 以有效结果结束,则使用异步 javascript 请求发送输入数据。这样,页面不会在服务器端发生任何错误时重新加载。用户留在网站上,成功后将被重定向。
但在您使用这种高级技术之前,请先了解如何在 php 中使用简单的 html 表单。;)