【发布时间】:2012-12-13 07:13:36
【问题描述】:
我正在尝试使用 PHP 实现错误检查系统(字符太少、输入空白等...)。
现在,如果我留下空白标题,则会捕获错误,但不会显示消息。这是实际检查输入的第一部分(仅显示事件标题)
Class check_errors{
function create_event_errors($event_title){
global $submit_error;
if($event_title == ""){
$field = "event_title";
$submit_error->setError($field,"Title cannot be blank");
}
elseif(strlen($event_title) < 5){
$field = "event_title";
$submit_error->setError($field,"Title must be longer than 5 characters");
}
elseif(strlen($event_title) > 75){
$field = "title";
$submit_error->generalError($field,"Title must be less than 40 characters");
}
}
所以,在同一页面上,这是 display_errors 类
Class display_errors{
var $values = array(); //Holds submitted form field values
var $errors = array(); //Holds submitted form error messages
function setValue($field, $value){
$this->values[$field] = $value;
}
function setError($field, $errmsg){
$this->errors[$field] = $errmsg; //if I echo this, the error message displays
$this->num_errors = count($this->errors); //if I echo this, the # of errors displays
}
function value($field){
if(array_key_exists($field,$this->values)){
return htmlspecialchars(stripslashes($this->values[$field]));
}else{
return "";
}
}
function error($field){
if(array_key_exists($field,$this->errors)){
return $this->errors[$field];
}else{
return "";
}
}
}
现在讨论这个问题。当我尝试检查是否检测到错误时,它什么也没找到
$check_errors->create_event_errors($event_title); //submit the input to be checked
echo $display_errors->num_errors; //this does not display the # of errors. It does when I echo from within the function in the class though
if($display_errors->num_errors == 0){
//submit event
}
【问题讨论】:
-
变量
$displa_errors和global $submit_error指向同一个对象? -
不,我只是把那个 echo 语句放在那里看看我是否可以访问错误并且什么都没有出现。这只是为了检查那个实例。
-
两个对象应该相同
-
哪些对象?我有一个对象可以访问 error_checking 类,另一个对象可以访问 display_errors 类。它们不可能相同。
-
您可能希望避免使用“global”关键字。并查找 PHP 函数 filter_var(),因为如果你正确使用它,它可以为你节省很多工作。