PHP 表单验证功能无法正常工作


php form validation function not working properly

嗨,如果可能的话,我需要一些帮助。

我创建了一个PHP函数,该函数在每个字段的正下方显示表单服务器端验证的错误。以下是基本部分:

$errors = array();
//check if e-mail is valid
    if(filter_var($email, FILTER_VALIDATE_EMAIL) === false){
        $errors['email'] = "Please give a valid email.";
    }
.....
function display_error($field_name){
    global $errors;
    if($errors[$field_name]){
        echo "<span class='"form_error'">" . $errors[$field_name] . "</span>'n";
    }
}
....
<span id="spryEmail">
<label>E-mail *<br />
<input type="text" name="email" id="email" />
</label>
<span class="textfieldRequiredMsg">Your e-mail is required.</span><span class="textfieldInvalidFormatMsg">Please provide a valid e-mail.</span></span>
<?php display_error('email'); ?>

当我在浏览器上预览表单时(我暂时禁用javascript),它向我显示以下内容:

注意:未定义的索引:电子邮件在 C:.......''functions.php 在第 60 行,它指向函数内的 if 语句。如何修复此通知,使其不显示?注意:如果我提交表单,错误消息会正确显示。

2)正如你注意到的,我还添加了一些验证模糊的Spry验证。我有一个验证码字段

<span id="spryCaptcha">
<label>Security code *<br />
<img src="captcha.php" id="imgCode" />
<input type="text" name="captcha" id="captcha" />
</label>
<span class="textfieldRequiredMsg">Please type the code you see.</span></span>
<?php error_for('captcha'); ?>

我想做的是,如果用户输入了错误的代码,则在点击提交按钮之前,来自error_for功能的消息也会显示在 Onblur 上。我怎样才能做到这一点?

任何帮助将不胜感激。

实际上,函数内部代码的这种更改在我的第一个问题上if(!empty($errors[$field_name])){ ... }效果很好!

首先摆脱那个丑陋的global $errors

function display_error($errors, $field_name)

然后<?php display_error($errors, 'email'); ?>

并确保索引存在if (isset($errors['email']))