私はコードイグナイターとMVCを初めて使用するので、データベースに保存したデータを介してログインフォームにユーザーをログインさせるために、ゆっくりと確実に取得しています。
記事やフォーラムからのアドバイスから現在のバージョンをまとめましたが、この時点で、データが適切に保存および送信されていないように見える理由について少し混乱しています.
パスワードが正しくない場合にフォームを再ロードするようにログインフォームを設定しました(最終的にメッセージを追加します)
そうは言っても、適切なログイン情報を入力すると、ページがリロードされます。これは、データベースと適切に通信していないか、$data
変数を使用して情報を適切に送信または保存していないことを示しているだけです。
これが私が賢明なコードを持っているものです:
モデル:
<?php
class User_model extends CI_Model {
function __construct()
{
// Call the Model constructor
parent::__construct();
}
function login($data = array())
{
// validate data
if( !empty($data) ) return FALSE;
// retrieve query
$query = $this->db
->from('users')
->where($data)
->get();
// Check if query row exists
if($query->row())
{
// Query row exists, return query row
return $query->row();
}
else
{
// Query row doesn't exist, return FALSE
return FALSE;
}
}
}
意見:
title>Login</title>
<!--MAKE SURE SIGNED OUT HEADER IS IMPLEMENTED FOR ALL SIGNED OUT PAGES INCLUDING THIS ONE-->
<div class="structure clearfix">
<h1 class="title_header">
Sign In
</h1>
<div id="signin_form">
<?php
echo validation_errors();
echo form_open('auth/validate_credentials');
echo "<div class='form_text_signin'>";
echo "Email";
echo "</div>";
echo form_input('email');
echo "<div class='form_text_signin'>";
echo "Password";
echo "</div>";
echo form_input('password');
echo form_submit('submit', 'Submit');
echo form_close();
?>
</div>
</div>
コントローラ:
<?php
class Auth extends CI_Controller {
function __construct()
{
// Call the Model constructor
parent::__construct();
}
// this is automatically called if no other function is called
// it simply turns around and calls the login() function to show the login page
public function index() {
$this->login();
}
public function login() {
$data['main_content'] = 'auth/login';
$this->load->view('includes/templates/main_page_template', $data);
}
function validate_credentials () {
$query = $this->load->model('user_model');
if($query)
{
$data = array(
'email' => $this->input->post('email'),
'password' => $this->input->post('password'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
redirect('account/dashboard');
}
else
{
$this->index();
}
}
}
前もって感謝します。