来自手机的codeigniter会话-每个页面负载都有一个新的IP
我遇到了以下问题。我无法使用电话登录到我的系统。当我使用手机时,有4个ip地址的结尾,因此system/libraries/Session.php第192行整个函数sess_read()的ip匹配返回FALSE,因此我无法从手机登录 但奇怪的是,大约两周前,当我向朋友展示我的应用程序时,我就可以登录了。在我的电脑上一切正常。这只是一个问题,输入IP必须与DB IP相同 你们中有人遇到过这种情况吗?我使用最新的codeigniter版本2.1.3。我不想硬编码Session.php,因为它是一个核心库来自手机的codeigniter会话-每个页面负载都有一个新的IP,codeigniter,session,Codeigniter,Session,我遇到了以下问题。我无法使用电话登录到我的系统。当我使用手机时,有4个ip地址的结尾,因此system/libraries/Session.php第192行整个函数sess_read()的ip匹配返回FALSE,因此我无法从手机登录 但奇怪的是,大约两周前,当我向朋友展示我的应用程序时,我就可以登录了。在我的电脑上一切正常。这只是一个问题,输入IP必须与DB IP相同 你们中有人遇到过这种情况吗?我使用最新的codeigniter版本2.1.3。我不想硬编码Session.php,因为它是一个核
谢谢,JakubSet
$config['sess\u match\u ip']=FALSE代码>
如果手机正在更改IP地址,则CI无法控制
如果您必须启用sess_match_ip,您也可以在配置文件中添加一些逻辑,根据具体情况将sess_match_ip设置为true/false
$config['sess_match_ip'] = has_changing_ips();
function has_changing_ips()
{
/**
* Code to return true if normal or
* return false if phone or other device with changing IPs
*/
}
好的,我已经为app/config/config.php编写了这个函数:
$config['sess_match_ip'] = match_ip(3);
// $range sets -+ of the last numbers
function match_ip ($range){
session_start();
$IP = $_SERVER['REMOTE_ADDR'];
$IP_parts = explode(".", $IP);
if (isset($_SESSION['mi'])){
//If the last part is the same, match IP
if ($_SESSION['mi'] == $IP_parts['3']){
return TRUE; // SAME IP doesn't cause the problem, therefore TRUE
}
// If the last ending($_S[mi]) is +- 3, IP is dynamic, therefore FALSE
if (($IP_parts['3']-$range <= $_SESSION['mi']) && ($_SESSION['mi'] <= $IP_parts['3']+$range)) {
return FALSE;
}
else{
return TRUE;
}
}
// If session not set, set it.
else{
$_SESSION['mi'] = $IP_parts['3'];
}
}
$config['sess\u match\u ip']=match\u ip(3);
//$range集合-+最后的数字
功能匹配\u ip($范围){
会话_start();
$IP=$\u服务器['REMOTE\u ADDR'];
$IP_零件=爆炸(“.”,$IP);
如果(isset($\u会话['mi'])){
//如果最后一部分相同,则匹配IP
如果($\u会话['mi']==$IP\u部分['3'])){
return TRUE;//相同的IP不会导致问题,因此为TRUE
}
//如果最后一个结尾($S[mi])是+-3,则IP是动态的,因此为FALSE
如果($IP_零件['3']-$range