php - 过程函数发生相反的结果

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

关于php - 过程函数发生相反的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69139421/

相关文章:

PHP 类;通知: Undefined property error

php - fatal error : Cannot use object of type mysqli_result as array in. ..第 97 行

javascript - jquery ajax 异步没有相应地工作

php - 内部加入后"Column ' id ' in where clause is ambiguous"?

php - 将 Google map API V2 升级到 V3

php - JQuery UI,单个页面上的多个日期选择器

php - 从数组中的特定行获取数据

php - 无法创建 Composer 包 - InvalidArgumentException

php - 从 Woocommerce 3 中的特定产品类别获取订单商品

php - Laravel 单元测试邮件