处理表单数据时遇到问题。提交表单时,将创建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
数组定义为变量,然后检查它们,但结果仍然相同。
希望有人可以提供帮助,我已经围绕这个问题转了一圈!!
答案 0 :(得分:0)
如果没有错误,该键将不在数组中。写得像这样:
if(isset($this->errors[$name])) {
答案 1 :(得分:0)
您正在尝试为“名称”字段显示错误,但由于它有效,因此没有错误,因此“名称”的$ this-&gt;错误中没有索引。试试这个......
public function getError($name) {
if(isset($this->errors[$name])) {
return $this->errors[$name];
}
}