1

我对 CI MVC 模型非常陌生。

我有一个由 3 个视图组成的简单页面。页眉、内容和页脚。内容在整个站点中是唯一的,但页眉和页脚将是相同的,无论是哪个页面。

在我的标题中,我有一个登录表单。所以整个网站都会有一个登录表单。因为它出现在每个具有差异模型的页面上:

我将如何或在哪里编写用于登录用户的脚本,因为我不想在每个使用标头的模型上编写登录脚本......

也许另一个例子:

如果不清楚,我尝试另一个示例。假设我有一个网站。在那我加载了一个视图,它是我所有页面的页脚。页脚包含一个表单。现在,当我使用该表单发布数据时,该数据应该去哪里?

显示它转到处理该表单中所有帖子的专用 PHP 文件,还是应该转到当前页面的控制器?

我希望我很清楚。同样,我一天前刚开始使用 CI 和 MVC。如果您能指导我,那就太好了。

4

2 回答 2

1

当我使用该表格发布数据时,该数据应该去哪里?

您不应该在每个页面(控制器)上编写逻辑。您应该做的是创建一个独特的控制器(如Accounts)来管理用户日志记录。

登录表单应将数据发布到accounts/loginURL。但要返回上一页,我们应该将会话中的当前 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());
    }
}
于 2013-07-29T08:37:44.543 回答
0
  1. 使用全局函数创建模型
  2. 将函数放在“models”下的config autoload.php中
  3. 您可以从任何地方调用此模型而无需加载它
于 2013-07-29T01:38:24.890 回答