You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

面向过程PHP表单验证功能结果反向异常排查求助

问题根因

validate校验函数的判断条件完全写反。
当前代码中if ($name)的逻辑是:当$name不为空(有有效值)时,才向错误数组添加「Name is required」的错误提示,自然出现「填了内容报错、空内容放行」的反向效果。

修复方案

修改validate函数的判断逻辑,字段为空时才添加错误提示,建议使用empty()做判空处理更稳妥:

function validate($name, $email, $password): array
{
    $errors = [];

    if (empty($name)) {
        $errors[] = "Name is required";
    }
    if (empty($email)) {
        $errors[] = "Email is required";
    }
    if (empty($password)) {
        $errors[] = "Please enter a valid password";
    }

    return $errors;
}

额外优化建议

你当前直接读取$_POST里的字段没有做存在性判断,当用户恶意提交不携带对应字段的请求时,会抛出PHP Notice级别报错,建议修改提交逻辑的取值部分:

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

内容的提问来源于stack exchange,提问作者Method

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:51:02