我想使一些操作只对登录用户可用。我试图用这个代码来限制一些:
function _remap($method)
{
$restricted = array('update_rating', 'delete_post');
if( ! $this->session->userdata('logged_in') && in_array($method, $restricted))
{
echo 'Log in, please';
}
else {
$this->$method();
}
}但是$this->$method()没有接收到在url中发送的参数。做些什么呢?,我想让一些操作成为唯一的登录用户。
发布于 2010-12-09 07:48:45
若要限制整个控制器的登录用户,请使用以下内容:
function __construct(){
if(!is_logged_in){
redirect('user/login');
}
}如果需要限制特定方法,也可以这样做:
function restricted_function(){
if(!is_logged_in){
redirect('user/login');
}
}这需要在调用控制器之前设置一个is_logged_in变量。
我使用一个MY_controller来检查所有控制器继承的登录会话。
发布于 2010-12-09 07:16:32
理想情况下,您不应该使用这种开发模式来创建用户登录。您只需在调用的类的构造函数中检查,并使用$this->router->方法查看用户试图访问的方法。对照需要登录的方法数组检查,然后检查用户是否已登录。如果其中一个条件为false,请重定向到登录页,否则,继续执行调用。以下是示例实施情况:
Class XYZ extends Controller{
function __construct() {
parent::controller();
$protected_methods = array('method_1', 'method_2');
if(in_array($this->router->method, $protected_methods)){
// check if user is logged in
if(!$this->session->userdata('logged_in'))
redirect('/login');
}
}
}发布于 2010-12-06 03:36:32
你没有给它发送任何参数。
您应该给出所有需要$method计算的参数。
function _remap($method)
{
$restricted = array('update_rating', 'delete_post');
if( ! $this->session->userdata('logged_in') && in_array($method, $restricted))
{
echo 'Log in, please';
}
else
{
$params = get_func_get_args();
$this->$method($params);
}
}注意,这些方法现在将接收参数的数组。
https://stackoverflow.com/questions/4360663
复制相似问题