php - 程序功能发生的相反结果
问题描述
我使用程序 php 创建了一个脚本,它使用 2 个函数
功能 1#是注册发送信息到数据库。
功能 2#是验证必填字段。
我在表单中调用这些,它可以工作,但只能起到相反的作用,我不知道为什么,如果字段为空,它允许您提交和发送空白查询,如果字段有值,则返回字段是必需的。
我的验证功能
function validate($name, $email, $password): array
{
$errors = [];
if ($name) {
$errors[] = "Name is required";
}
if ($email) {
$errors[] = "Email is required";
}
if ($password) {
$errors[] = "Please enter a valid password";
}
return $errors;
}
表单页面
if ($_SERVER['REQUEST_METHOD'] === "POST") {
$name = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];
$errors = validate($name, $email, $password);
if (empty($errors)) {
signup($email, $name, $password);
}
}
然后是显示错误的代码
我的表格
<?php if (!empty($errors)) : ?>
<ul>
<?php foreach ($errors as $error) : ?>
<li><?= $error ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<form name="form-registration" method="post">
<fieldset>
<div>
<label for="name">Name</label>
<input id="name" name="name" value="">
</div>
</fieldset>
<fieldset>
<div>
<label for="email">Email Address</label>
<input id="email" name="email" value="">
</div>
</fieldset>
<fieldset>
<div>
<label for="password">Password</label>
<input type="password"name="password">
</div>
</fieldset>
<input type="submit" value="insert">
</form>
解决方案
当你写
if($name){
///
}
这意味着当name
值存在或不为空时,您需要像这样反转它
if (!$name) {
$errors[] = "Name is required";
}
编辑validate
方法后它应该是这样的
function validate($name, $email, $password): array
{
$errors = [];
if (!$name) {
$errors[] = "Name is required";
}
if (!$email) {
$errors[] = "Email is required";
}
if (!$password) {
$errors[] = "Please enter a valid password";
}
return $errors;
}
推荐阅读
- python - `scipy.minimize` 如何应用全局约束
- sql-date-functions - 创建表时如何将 SQL 数据库中的 GETDATE() 转换为特定格式?
- vba - 在公共函数中声明变量(Excel VBA)
- android - 将现有的外部库添加到 Android Studio 中的新项目
- azure - 部署后 Web App 未加载
- .net - 带有发布配置的 SourceLink
- crystal-reports - 您可以在晶体中进行行数以选择显示数据的位置吗?
- scala - 防止 log4j 评估比全局更高级别的跟踪
- signtool - Signtool:自 Windows 10 更新 1803 以来:未找到符合所有给定条件的证书
- node.js - 使用打字稿设置 Firebase 服务帐户时出错