2

p4a アプリケーションのユーザーをアプリケーションのダッシュボード ビューにリダイレクトしようとしていますが、ログインに成功した後、「main_dashboard_mask」へのリダイレクトで「Method openmask not found login_mask.php line 35」というエラーが表示されます。

class login_mask extends P4A_Base_Mask
{
public function __construct()
{
    parent::__construct();

    $this->setTitle("Login to Dashboard");

    $this->build("p4a_field", "username");

    $this->build("p4a_field", "password");
    $this->build("p4a_button", "login")
    ->implement("onclick", $this, "login");

    $this->frame
    ->anchor($this->username)
    ->anchor($this->password)
    ->anchor($this->login);
}

public function login()
{
    $username = $this->username->getNewValue();
    $password = $this->password->getNewValue();

    $sql = "SELECT * FROM users
    WHERE
            username = ?";      

    $row = p4a_db::singleton()->fetchRow($sql, array($username));

    if (($row['username'] == $username) && ($row['password'] == $password )){
        $this->openMask("main_dashboard_mask");}
    else {
          $this->setTitle("Login Failed");}
    }
}

それがインデックスファイルなのか、ここで見逃したものなのかわかりません。わかりました。もう一度やり直しました。ページのどこに関数を配置しても、エラーがどこにあるかに関係なく、問題を見つけることができないようです。問題が発生し続けている場合、問題は以前のページの 1 つにあると思われます。

<?php

define ("P4A_DSN", "mysql://root:@localhost/login" );

require_once dirname(__FILE__) . '/../../p4a.php';

$login = p4a::singleton('login_begin');

$login->main();

...

<?php 
class login_begin extends P4A
{
public function __construct()
{
    parent:: __construct();
    $this->openMask("login_mask");
}
}

どんな助けでも大歓迎です。

4

1 に答える 1

1

私は問題が何であるかを理解しました。クラスlogin_maskでP4A_Base_Maskを拡張するとき、これをソートするために必要な関数(主にopenmask関数)を除外しました。P4Aを拡張するためにプリカーサーを使用しました(openMaskの使用を許可します)このコード行は

p4a::singleton()->openmask()

したがって、パブリック関数login()の変更は

public function login()
{

    $username = $this->username->getNewValue();
    $password = $this->password->getNewValue();

    $sql = "SELECT * FROM users
    WHERE
            username = ?
            ";      

    $row = p4a_db::singleton()->fetchRow($sql, array($username));

    if (($row['username'] == $username) && ($row['password'] == $password ))
    {   
        p4a::singleton()->openmask("main_dashboard_mask");
    }

    else {
    $this->setTitle("Login Failed");}
}

これが不明確で、誰かがそれをより明確に説明したい場合、それは大歓迎です、私がどの専門用語を使用すべきか完全にはわかりません:)

于 2012-10-19T15:45:36.890 に答える