如何在CodeIgniter中将数据库中的ip地址值拆分为数组格式



我正在开发CodeIgniter应用程序,希望将IP地址拆分为数组格式。实际上,我从数据库列中获取值,但无法从数据库中获取的动态值创建数组?

控制器代码

Getting Values from the database 
$system = $this->Xin_model->read_enter_allow_ip_address_info(1);
$allowlist =  array($system[0]->enter_allow_ip_address);
$finalipallow = nl2br($allowlist);
if(!in_array($_SERVER['REMOTE_ADDR'],$finalipallow)){
$Return['error'] = 'Login Failed';  
$this->output($Return); 
}

模型查询

public function read_enter_allow_ip_address_info($id) {
$condition = "setting_id =" . "'" . $id . "'";
$this->db->select('enter_allow_ip_address');
$this->db->from('xin_system_setting');
$this->db->where($condition);
$this->db->limit(1);
$query = $this->db->get();      
return $query->result();
}

数据库列的动态值

'10.0.0.1','10.0.0.2','10.0.0.3','::1'

如何将数据库中的IP地址值拆分为像这个静态数组这样的数组格式

$finalipallow = array(
'10.0.0.1',
'10.0.0.2',
'10.0.0.3',
'::1'
);

我有一个使用if condition的静态数组,但我想像静态数组一样将动态值转换为数组?

现在在这里工作它的解决方案

$system = $this->Xin_model->read_enter_allow_ip_address_info(1);
$allowlist =  $system[0]->enter_allow_ip_address;
$finalipallow = str_getcsv($allowlist, ",", "'");
if(!in_array($_SERVER['REMOTE_ADDR'],$finalipallow)){
$Return['error'] = 'Login Failed';   
$this->output($Return);  
}

您可以使用str_getcsv()将其处理为CSV记录。。。

$data = "'10.0.0.1','10.0.0.2','10.0.0.3','::1'";
$finalipallow = str_getcsv($data, ",", "'");
print_r($finalipallow);

其输出。。。

Array
(
[0] => 10.0.0.1
[1] => 10.0.0.2
[2] => 10.0.0.3
[3] => ::1
)

只需将$data更改为数据库中的值即可。使用设计和可选的封闭参数可以从数据中去掉多余的引号。

您可以使用explode,它将拆分字符串并返回数组中的项

$newArray = explode(',',$dbString);

print_r($newArray);<--你可以查看数据

$dbString=  "'10.0.0.1','10.0.0.2','10.0.0.3','::1'";
$newArray = explode(',',$dbString);
print_r($newArray);

输出:Array ( [0] => '10.0.0.1' [1] => '10.0.0.2' [2] => '10.0.0.3' [3] => '::1' )

您将需要用空字符串替换',因为我可以看到您正在比较确切的IP和数组。你可以这样做:

$dbString=  "'10.0.0.1','10.0.0.2','10.0.0.3','::1'";
$dbString= str_replace("'", "", $dbString);
$newArray = explode(',',$dbString);
print_r($newArray);

或者您可以更改

`if(!in_array($_SERVER['REMOTE_ADDR'],$newArray)`)

if(!in_array("'".$_SERVER['REMOTE_ADDR']."'",$newArray))

相关内容

  • 没有找到相关文章