我是CI MVC模型的新手。
我有一个简单的页面,由3个视图组成。标题,内容和页脚。内容在整个网站上都是唯一的,但无论在哪个页面,页眉和页脚都是相同的。
在我的标题中,我有登录表单。因此整个网站都会有一个登录表单。因为它出现在每个具有差异模型的页面上:
我将如何或在何处编写用于登录用户的脚本,因为我不想在每个使用标题的模型上编写登录脚本...
可能是另一个例子:
如果不清楚,我会尝试另一个例子。假设我有一个网站。在那里我加载了一个视图,这是我所有页面中的页脚。并且页脚包含一个表单。现在,当我使用该表单发布数据时,该数据应该去哪里?
显示它转到一个专用的PHP文件,它处理该表单中的所有帖子,还是应该转到当前页面的控制器?
我希望我很清楚。我再一次开始使用CI和MVC。如果你可以指导我,那就太好了。
答案 0 :(得分:1)
当我使用该表单发布数据时,该数据应该去哪里?
您不应该在每个页面(控制器)上编写逻辑。您应该做的是创建一个独特的控制器(如Accounts
)来管理用户日志记录。
登录表单应将数据发布到accounts/login
网址。但要返回上一页,我们应将会话中的当前网址存储为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());
}
}
答案 1 :(得分:0)