0

XAMPP を使用してローカルで Code Igniter を使用した単純な CMS システムを開発しました。それは実行され、機能していましたが、サーバーにデプロイすると、呼び出し時にスクリプトが停止します

$this->form_validation->run();

次のコードで:

public function check_login(){
    echo $this->load->library('form_validation');
    $this->form_validation->set_rules('username', 'Benutzername', 'required|trim|xss_clean|callback_validate_credentials');
    $this->form_validation->set_rules('password', 'Passwort', 'required|xss_clean');
    echo 'check';
    if($this->form_validation->run()){
        echo 'check:run';
       $this->load->model('user_model');
       $username = $this->input->post('username');

       $userid = $this->user_model->get_userid_by_name($username);
       $admin = $this->user_model->is_user_admin($username);



       $userdata = array(
           'username' => $username,
           'is_admin' => $admin,
           'is_logged_in' => true,
           'user_id' => $userid
       );
       $this->session->set_userdata($userdata);
       redirect(base_url() . 'blog');
    } else {
        echo 'check:else';
      $this->do_login();
    }
    echo 'check:end';
}

コールバック関数は次のとおりです。

public function validate_credentials(){
    echo 'test';

    echo '<pre>';
    print_r($_POST);
    echo '</pre>';

    $this->load->model('user_model'); // the script stops here
    $this->load->model('security/pass_hasher');

    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $hashed_password = $this->pass_hasher->hash($password);

    echo $username . '<br />';
    echo $password . '<br />';
    echo $hashed_password . '<br />';

    print_r($this->input->post());

    if($this->user_model->can_login($username, $hashed_password)){
        if($this->user_model->is_user_active($username)){
            return true;
        }
        else {
            $this->form_validation->set_message("validate_credentials", "Benutzeraccount wurde deaktviert!");
            return false;
        }
    }
    else {
        $this->form_validation->set_message("validate_credentials", "Benutzername und/oder Passwort ist falsch.");
        return false;
    }
}

デバッグ上の理由から、いくつかのエコーを作成しました。出力は次のとおりです。

小切手

そのため、スクリプトは上記の方法で実行を停止します。なんで?私はオートロードformurlていて、構成に入っています。Code Igniter 環境は開発用に設定されています。また、私のローカル マシンの PHP バージョンは 5.4.4 で、Web サーバーのバージョンは 5.3.8 で、どちらも必要な 5.1.6 よりも新しいものです。

関数に手動でデータを投稿するとvalidate_credentials()、次の出力が得られます。

test
配列
(
    [ユーザー名] => 管理者
    [パスワード] => テスト
)

したがって、 $this->input->post() は機能していません。しかし、その理由はまだわかりませんでした。

4

0 に答える 0