protected static function setSID($SID) { if (self::$IPlevel) { // Session <-> IP binding (IPv4 only) $IPs = '127.0.0.1,' . $_SERVER['REMOTE_ADDR'] . ',' . (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : '') . ',' . (isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : ''); preg_match_all('/(?<![\\.\\d])\\d+(?:\\.\\d+){' . (self::$IPlevel - 1) . '}/u', $IPs, $IPs); sort($IPs[0]) && ($IPs[0] = array_unique($IPs[0])); $IPs[1] = explode('.', $_SERVER['REMOTE_ADDR'], self::$IPlevel + 1); unset($IPs[1][self::$IPlevel]); $IPs = implode('.', $IPs[1]) . ',' . implode(',', $IPs[0]); } else { $IPs = ''; } self::$SID = md5($SID . '-' . $IPs); }