来自手机的codeigniter会话-每个页面负载都有一个新的IP

来自手机的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,因为它是一个核

我遇到了以下问题。我无法使用电话登录到我的系统。当我使用手机时,有4个ip地址的结尾,因此system/libraries/Session.php第192行整个函数sess_read()的ip匹配返回FALSE,因此我无法从手机登录

但奇怪的是,大约两周前,当我向朋友展示我的应用程序时,我就可以登录了。在我的电脑上一切正常。这只是一个问题,输入IP必须与DB IP相同

你们中有人遇到过这种情况吗?我使用最新的codeigniter版本2.1.3。我不想硬编码Session.php,因为它是一个核心库


谢谢,Jakub

Set
$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