当我尝试在我的网站上提交表单时,我收到以下错误:
致命错误:无法访问第15行的functions / form_validation.php中的空属性
表单验证的代码是:
class Validation {
var $success;
var $post_data;
var $errors;
var $delimiter;
function Validation($HTTP_POST_DATA) {
$this->success = true;
$this->errors = false;
$this->$post_data = $HTTP_POST_DATA;
$this->delimiter = "|";
while(list ($key, $val) = each ($this->$post_data)) {
$this->{$key} = $val;
}
reset($this->$post_data);
while(list ($key, $val) = each ($this->$post_data)) {
if(method_exists($this, $key)) {
$cmd = "\$this->".$key."();";
eval($cmd);
}
}
}
表单页面中的代码是:
include_once($APP_ROOT . "functions/index.php");
include_once($APP_ROOT . "functions/form_validation.php");
$CONTINUE = TRUE;
$valid = new Validation($_POST);
if($CONTINUE = $valid->success) {
在我们升级到PHP5之前,这段代码工作得很好。知道我需要改变什么来让它再次运作吗?
由于
答案 0 :(得分:7)
$this->$post_data
应为$this->post_data
将来,请尝试查看错误消息指向您的行,因为通常情况就是问题所在! ;)
答案 1 :(得分:6)
改变这个:
$this->$post_data = $HTTP_POST_DATA;
对此:
$this->post_data = $HTTP_POST_DATA;
答案 2 :(得分:1)
您可以通过修改行来解决当前问题:
if(property_exists(this, $key)) $this->{$key} = $val;
如果您想确切知道为什么这不起作用,请尝试在调试模式下打印POST数组:
function Validation($HTTP_POST_DATA) {
echo '<pre>'. print_r($HTTP_POST_DATA, true). "</pre>\n";
... rest of method ...
另外,将$this->$post_data
的所有实例更改为$this->post_data