したがって、対応するビューを指す「ダッシュボード」コントローラーがあります。このファイルには、 にアクセスするだけでいつでもアクセスできますhttp://domain.com/dashboard
。ただし、ユーザーが既にログインしている場合にのみ、この URL にアクセスしたいと考えています。そうでない場合は、ホームページにリダイレクトされます。
だから2つの部分の質問:
ユーザーが最初にログインしていない場合に「ダッシュボード」にアクセスできないようにするにはどうすればよいですか (それ以外の場合はホームページにリダイレクトする必要があります)...編集: この問題は修正され、以下のコードが更新されました
登録コントローラーで、ユーザーが機能に誘導される
thank()
(登録ありがとうページに移動する) 代わりに、ユーザーを自動的にログインさせてダッシュに連れて行くにはどうすればよいですか?
これが私の「ダッシュボード」コントローラーです。編集:正常に動作するようになりました。上記の 2 番目 (2) の問題はまだ残っています。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Dashboard extends CI_Controller{
function __construct(){
parent::__construct();
$this -> load -> model('user_model');
}
public function index()
public function index()
{
$session = $this->session->userdata('logged_in');
if ($session == 1)
{
$data['title'] = 'Dashboard';
$this -> load -> view('shared/header_view', $data);
$this -> load -> view('dash', $data);
$this -> load -> view('shared/footer_view', $data);
}
else {
redirect('register');
}
}
}
ユーザーをログイン、ログアウト、および登録する登録コントローラーは次のとおりです。
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Register extends CI_Controller {
public function __construct()
{
parent::__construct();
$this -> load -> model('user_model');
}
public function index()
{
if (($this -> session -> userdata('user_name') != "")) {
$this -> welcome();
}
else
{
$data['title'] = 'Home';
$this -> load -> view('shared/header_view', $data);
$this -> load -> view("registration_view.php", $data);
$this -> load -> view('shared/footer_view', $data);
}
}
public function welcome()
{
redirect('/dashboard/', 'refresh');
}
public function login()
{
$email = $this -> input -> post('email');
$password = md5($this -> input -> post('pass'));
$result = $this -> user_model -> login($email, $password);
if ($result)
$this -> welcome();
else
$this -> index();
}
public function thank()
{
$data['title'] = 'You are now registered!';
$this -> load -> view('shared/header_view', $data);
$this -> load -> view('thank_view.php', $data);
$this -> load -> view('shared/footer_view', $data);
}
public function registration()
{
$this -> load -> library('form_validation');
// field name, error message, validation rules
$this -> form_validation -> set_rules('user_name', 'User Name', 'trim|required|min_length[4]|xss_clean');
$this -> form_validation -> set_rules('email_address', 'Your Email', 'trim|required|valid_email');
$this -> form_validation -> set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]');
$this -> form_validation -> set_rules('con_password', 'Password Confirmation', 'trim|required|matches[password]');
if ($this -> form_validation -> run() == FALSE)
{
$this -> index();
}
else
{
$this -> user_model -> add_user();
$this -> thank();
}
}
public function logout()
{
$newdata = array('user_id' => '', 'user_name' => '', 'user_email' => '', 'logged_in' => FALSE, );
$this -> session -> unset_userdata($newdata);
$this -> session -> sess_destroy();
redirect('/', 'refresh');
}
}
編集: 要求どおり、user_model は次のとおりです。
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class User_model extends CI_Model {
public function __construct() {
parent::__construct();
}
function login($email, $password)
{
$this -> db -> where("email", $email);
$this -> db -> where("password", $password);
$query = $this -> db -> get("user");
if ($query -> num_rows() > 0)
{
foreach ($query->result() as $rows)
{
//add all data to session
$newdata = array(
'user_id' => $rows -> id,
'user_name' => $rows -> username,
'user_email' => $rows -> email,
'logged_in' => TRUE,
);
}
$this -> session -> set_userdata($newdata);
return true;
}
return false;
}
public function add_user()
{
$data = array(
'username' => $this -> input -> post('user_name'),
'email' => $this -> input -> post('email_address'),
'password' => md5($this -> input -> post('password')),
);
$this -> db -> insert('user', $data);
}
}
コードイグナイター初心者。私は何を間違っていますか?