Php 无法使用codeigniter中的回调重定向url
我只是创建了一个登录类来检查有效用户,在该用户进入他/她的主页部分之后。但现在我需要有条件地更改用户家的目的地,无法 在url重定向中附加开关大小写 注意:我认为varibale没有正确地传入函数。请帮助我 我的代码如下:Php 无法使用codeigniter中的回调重定向url,php,codeigniter,url,xss,url-redirection,Php,Codeigniter,Url,Xss,Url Redirection,我只是创建了一个登录类来检查有效用户,在该用户进入他/她的主页部分之后。但现在我需要有条件地更改用户家的目的地,无法 在url重定向中附加开关大小写 注意:我认为varibale没有正确地传入函数。请帮助我 我的代码如下: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class VerifyLogin extends CI_Controller { func
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class VerifyLogin extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('userp','',TRUE);
}
function index($dest)
{
$this->load->view('header');
//This method will have the credentials validation
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'Email', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
if($this->form_validation->run() == FALSE)
{
//Field validation failed. User redirected to login page
$data['msg'] = "";
$this->load->view('login',$data);
}
$this->load->view('footer');
}
function check_database()
{
//Field validation succeeded. Validate against database
$email = $this->input->post('email');
//query the database
$password= $this->input->post('password');
$result = $this->userp->login($email,$password);
if($result!==FALSE)
{
$sess_array = array();
foreach($result as $row)
{
$sess_array = array(
'id' => $row->id,
'username' =>$row->email,
'fname' =>$row->first_name,
'lname' =>$row->last_name,
'pic'=>$row->pic
);
$this->session->set_userdata('logged_in',$sess_array);
}
switch($dest){
case 'NULL':{
redirect('home','refresh');
break;
}
case 'part1':{
redirect('subhome','refresh');
break;
}
case 'part2':{
redirect('subhome1','refresh');
break;
}
default :{
redirect('mainhome','refresh');
break;
}
}
return TRUE;
}
else
{
$data['msg'] = "Something Wrong Username/Password";
$this->load->view('login',$data);
//return false;
}
}
};
?>
问题是您正在将
$dest
传递给index()
函数,但您正试图在check_database()
函数中使用它。因此,您要么想将开关移到索引函数中,要么想将$dest
传递到check_database()
中,就像这样
function check_database($dest)
{
//You can use $dest in here
}
如果您想向回调函数传递一个额外的参数,您需要将它放在括号中,如
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database[parameter]');
或
$dest是在索引($dest)中声明的,但不是在check_database()中声明的,您的交换机正试图在其中使用$dest。如果您编辑config/routes.php并添加一个路由,例如$route['check_database/(:any)]='verifylogin/database_check/$1'并将check_database()更改为check_database($dest),则如何将其传递到check_database($dest)您在URL中输入的任何内容代替(:any)都将作为$dest.$this->form_validation->set_rules('password'、'password'、'trim | required | xss|u clean | callback|u check_database')传递给check_数据库@Pattle我是codeigniter的新手,我怎样才能通过destcallback@rbstack我已经更新了答案,解释了如何向回调函数传递额外的参数
$this->form_validation->set_rules("password", "Password", "trim|required|xss_clean|callback_check_database[$parameter]");