首页 > 解决方案 > 程序功能发生的相反结果

问题描述

我使用程序 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>

标签: php

解决方案


当你写

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;
}

推荐阅读