そのフォームを使用してデータを投稿する場合、そのデータはどこに送信すればよいですか?
すべてのページ (コントローラー) にロジックを記述しないでください。あなたがすべきことは、Accounts
ユーザーロギングを管理するための別個のコントローラー ( など) を作成することです。
ログインフォームは、データをaccounts/login
URL に投稿する必要があります。ただし、前のページに戻るには、現在の URL をセッションに として保存する必要がありますreferer
。
uri_string();
そのためには、必要な各ページのセッションに保存するだけです。
$this->session->set_userdata(array(
'referer' => $this->uri->uri_string()
));
ユーザーを前のページにリダイレクトする必要がない場合は、無視してください。
以下の例は、目標を達成する方法を示しています。
class Accounts extends CI_Controller {
public function login()
{
$config = array(
// Write your validation rules here
);
$this->load->library('form_validation');
$this->form_validation->set_rules($config);
// Check whether form is submitted
if (isset($_POST['submit'])) {
if ($this->form_validation->run() == FALSE) {
$data['login_errors'] = validation_errors();
// Store validation errors in session
// to display on every page needed
$this->session->set_userdata($data);
} else {
// Login process
// Set user detail in session
// Redirect to previous page after login
if ($referer = $this->session->userdata('referer')) {
$this->session->unset_userdata('referer');
} else {
$referer='';
}
redirect(base_url().$referer);
}
}
}
public function logout()
{
// Destroy the session
$this->session->sess_destroy();
redirect(base_url());
}
}