为什么我的PHP表单验证不起作用?

use*_*808 4 php forms

当我尝试在我的网站上提交表单时,我收到以下错误:

致命错误:无法访问第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);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

表单页面中的代码是:

 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) {
Run Code Online (Sandbox Code Playgroud)

在我们升级到PHP5之前,这段代码以前工作得很好.知道我需要改变什么来让它再次运作?

谢谢

Nie*_*sol 7

$this->$post_data 应该 $this->post_data

将来,请尝试查看错误消息指向您的行,因为通常这就是问题所在!;)


Mar*_*ark 6

改变这个:

$this->$post_data = $HTTP_POST_DATA;
Run Code Online (Sandbox Code Playgroud)

对此:

$this->post_data = $HTTP_POST_DATA;
Run Code Online (Sandbox Code Playgroud)