4

サイトでフォームを送信しようとすると、次のエラーが表示されます。

致命的なエラー: 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 にアップグレードする前は問題なく動作していました。再び機能させるために何を変更する必要があるか考えていますか?

ありがとう

4

3 に答える 3

7

$this->$post_dataする必要があります$this->post_data

将来的には、エラー メッセージが指し示す行を調べてみてください。通常、そこに問題があるからです。;)

于 2013-09-18T19:08:19.330 に答える
6

これを変える:

$this->$post_data = $HTTP_POST_DATA;

これに:

$this->post_data = $HTTP_POST_DATA;
于 2013-09-18T19:08:46.273 に答える
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

于 2013-09-18T19:11:00.233 に答える