我有登录功能,我使用用户名和密码登录。现在我也要检查id地址。我的ip地址在另一个表中,其中id与rank匹配。我需要知道如何在我的控制器的相同功能中检查ip。如何编写我的函数?
Ip address table: login table:
id ip_address ID uname pass rank
2 98.231.50.890 1 admin admin321 1
这是我的登录功能。有一个档案级别。 IF等级为1.用户可以轻松登录其他智能功能将检查该IP地址。
public function loginAction() {
$postArray = $this->input->post();
$table= 'login';
//$user_type=1;
if (!empty($postArray)) {
$result = $this->m_common->login_with_password_string($postArray['user_name'], $postArray['user_pass'], $table);
if (!empty($result->ID) && isset($result->ID)) {
$this->session->set_userdata('user_id',$result->ID);
$this->session->set_userdata('user_name',$result->uname);
$this->session->set_userdata('theme',$result->theme);
$this->session->set_userdata('logged_in',1);
//$this->is_logged_in($this->session->userdata('logged_in'));
redirect(site_url(ADMIN.'/dashboard/view_player'));
// echo 'Hello';
} else {
$data['message']="Incorrect Username or Password";
$this->titlebackend("View Players");
$this->load->view('v_login',$data);
}
}
}
答案 0 :(得分:2)
你可以用这个
$ip = $this->input->ip_address();
echo $ip;
答案 1 :(得分:0)
步骤1,编写一个get ip address函数,如下面的
function getRealIpAddr(){
if(!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
步骤2,将所有ip_address作为数组从ip地址表中查询
$ips = array(); // assume this result from you database
if(in_array($ip,$ips)){
// true
}
// or you can loop the ips array
foreach(ips as $lip){
if($lip == $ip){
//true
break;
}
}
对于你的情况,我建议你在存储到数据库之前将ip转换为long类型,因为当ip表具有大数据时,它将提高查询性能。
$long = ip2long($ip);