有人可以帮我理解为什么我收到这个通知。我尝试按照教程here to create form validation进行操作,但我得到了
“注意:未定义的索引:第53行的...... \ workspace \ Registration \ registerValidation.php中的last_name”
<?php
$errors = array();
if($_SERVER['REQUEST_METHOD'] == 'POST'){
//validation
$testlName = $_POST['last_name'];
if(preg_match("([^A-Za-z0-9])", $testlName)){
$errors['last_name'] = "Please enter a valid last name";
}
//more validation code
}
function form_row_class($name){
global $errors;
return $errors[$name] ? "form_error_row" : "";
}
function error_for($name){
global $errors;
if($errors[$name]){ //this is line 53
return "<div class='form_error'>".$errors[$name]. "</div>";
}
}
?>
<form name="form1" method="post" action="registerValidation.php" >
<table class="form">
<tr class="<?php echo form_row_class("last_name") ?>">
<th><label for="last_name">Last Name</label></th>
<td>
<input name="last_name" id="last_name" type="text" size="15" maxlength="20" value="<?php if(isset($testlName)){echo htmlspecialchars($_POST['last_name']);}?>" />
<?php if(isset($testlName)){echo error_for('last_name');}?>
</td>
</tr>
</table>
<p><input type="submit" name="submit" value="register"></p>
为什么我会收到通知的任何想法?我是php的新手,所以解释得非常好,谢谢!
〜MYY
答案 0 :(得分:4)
应该是:
if(isset($errors[$name])) {
目前,您正在测试$errors[$name]
是否等于true,如果未设置该值,则会生成通知。
可能教程开发人员没有意识到,因为很多人都会关闭通知。虽然通常不推荐练习 - 但您应该将通知视为错误。
答案 1 :(得分:0)
尝试:
if(!isset($last_name)) { echo "$last_name = ""; }
或
if(empty($ last_name)){echo“$ last_name =”“;}
现在已定义。