未定义的索引:处理类中的表单时的名称

时间:2011-10-13 19:11:00

标签: php

处理表单数据时遇到问题。提交表单时,将创建sign_up类中的对象,并在此类中验证$_POST数组。然后执行各种'if'语句检查以过滤掉不需要的字符,如果结果不等于'0',则将消息添加到数组中,请参阅下面的摘录

    <?php
    include('super_class.php');

    class Signup_User extends Super_Class {
          protected $errors = array();

     public function processUserInput() {

          if($_SERVER['REQUEST_METHOD']=='POST') {

                if(0 == preg_match("/\S+/",$name = $_POST['name'])) {
                     $this->errors['name'] = "Please enter your first name.";
          }

表单有php代码,当没有填写字段等时执行以下操作

    <?php if(isset($_POST['name'])) { echo $sign_up->getError('name');}?>   

getError类对象中的sign_up代码。

    public function getError($name) {

    if($this->errors[$name]) {
        return $this->errors[$name];
    }
}

如果我加载表单并按“提交”,则所有错误都会按预期打印在输入字段旁边,但是如果我在名称输入框中输入一些文本,我会收到以下错误:{{1} },并指向getError函数?

我想我可能需要先将Notice: undefined index name数组定义为变量,然后检查它们,但结果仍然相同。

希望有人可以提供帮助,我已经围绕这个问题转了一圈!!

2 个答案:

答案 0 :(得分:0)

如果没有错误,该键将不在数组中。写得像这样:

if(isset($this->errors[$name])) {

答案 1 :(得分:0)

您正在尝试为“名称”字段显示错误,但由于它有效,因此没有错误,因此“名称”的$ this-&gt;错误中没有索引。试试这个......

public function getError($name) {

    if(isset($this->errors[$name])) {
        return $this->errors[$name];
    }
}