php,验证表单中的未定义索引

时间:2013-03-02 18:10:03

标签: php validation

有人可以帮我理解为什么我收到这个通知。我尝试按照教程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

2 个答案:

答案 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 =”“;}

现在已定义。