如果有可能的话,我需要一些帮助。
我创建了一个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)如果您注意到我还添加了一些验证onblur的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,然后再按下提交按钮。我怎样才能做到这一点?
任何帮助都将不胜感激。
答案 0 :(得分:0)
实际上,函数if(!empty($errors[$field_name])){ ... }
中的代码中的这个更改在我的第一个问题上工作得非常好!
答案 1 :(得分:-1)
首先摆脱丑陋的global $errors
function display_error($errors, $field_name)
然后<?php display_error($errors, 'email'); ?>
确保索引存在if (isset($errors['email']))