2012-03-17 55 views
0

所以,我有一些问题。CI黑客路由

我只是想创建一些网站,访问者可以与我的网站进行互动,如果他们注册。 让他们说他们已经提供了他们的用户名,电子邮件,密码,blah..blah..blah ... 然后,他们提供了他们的blah..blah..blah ..它会自动联系(如果他们的数据通过)到我的网站。 他们登录我的网站后,他们必须再次提供更多数据,例如他们上传了他们的个人资料照片,他们如何控制他们在我的网站的隐私,如一步一步注册。

我不希望他们与我的网站互动,直到他们完成注册。 如何使我网站中的每个页面看起来都像注册页面,直到他们完成注册。 这不像我会给这种功能正确。

if(is_login()){ 
    if(is_registration_complete()){ 
     //you're free to go 
    } else { 
     // complete your registration first 
    } 
} else { 
    //you're not logged in 
} 

在我的每一个控制器,如果你知道我的意思:)

如何globaly创建这个功能呢? 如果他们的注册没有完成,他们会去每个路线的注册控制员。 如果他们完成注册,他们会去,是的,你知道默认路线。

我很抱歉,如果我的英语不好,英语不是我的母语,对语法错误:)

回答

0

对不起,最简单的可能是创建一个带有你的检查功能,然后把它列入在受影响的ControllerS的构造器中:

class Blog extends CI_Controller { 

     public function __construct() 
     { 
      parent::__construct(); 
      // Load the lib here or Autoload 
      $this->load->library('mylogincheckhelper'); 
      $this->mylogincheckhelper->is_complete(); 
     } 
} 

然后你在Lib中做所有的ckecks和路由。

+0

什么是在is_complete()方法? 是否可以在该方法内加载视图? 而不是从博客控制器再次加载另一个视图? – 2012-03-17 07:40:03

0

您可以执行此操作的一种方法是通过extend the core CI_Controller创建自定义控制器。然后,您可以让您的页面控制器从您的自定义控制器扩展。通过扩展,您可以继承父项的功能,并且可以运行父构造函数(或者在覆盖它的情况下运行它),从而使它们对扩展它的任何人都“全局可用”。

//extend the core controller 
class MY_Controller extends CI_Controller { 

    //override to provide additional functionality 
    public function __construct(){ 

     //run the core controller 
     parent::__construct(); 

     //then do your login and registration checks here 
     //you can put code here, call another function or load a helper class 
     //or better, redirect them to your registration page 
    } 
} 

//your page's controller extending from your custom controller 
class Page extends MY_Controller { 

    //not overriding the constructor will execute the parent constructor 
    //every page that extends your extended controller will inherit it's functions 
    //and execute it's constructor 

} 
+0

我会试试这个,谢谢你的回答:) – 2012-03-17 07:47:23

0

用你的注册后的东西创建一个视图,并使它们有条件地可见。并将视图包含在您的模板中。