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