source: branches/2.2/header.session.inc.php @ 3867

Revision 3867, 2.9 KB checked in by niltonneto, 13 years ago (diff)

Ticket #1653 - Alterado de SCRIPT_URL para SCRIPT_NAME, por não ser variável padrão.

Line 
1<?php
2if ( isset( $_COOKIE[ 'sessionid' ] ) )
3        session_id( $_COOKIE[ 'sessionid' ] );
4
5session_start( );
6
7$sess = $_SESSION[ 'phpgw_session' ];
8$invalidSession = false;
9$user_agent = array();
10if (isset($GLOBALS['phpgw']) && !isset($_SESSION['connection_db_info'])){
11        $_SESSION['phpgw_info']['admin']['server']['sessions_checkip'] = $GLOBALS['phpgw_info']['server']['sessions_checkip'];
12        if($GLOBALS['phpgw_info']['server']['use_https'] == 1) {
13                $new_ip = (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR']."," : ""). $_SERVER['REMOTE_ADDR'];
14                $GLOBALS['phpgw']->db->query("UPDATE phpgw_access_log SET ip='$new_ip' WHERE account_id <> 0 and lo = 0 and sessionid='{$GLOBALS['sessionid']}'",__LINE__,__FILE__);
15        }
16         $GLOBALS['phpgw']->db->query("select trim(sessionid),".($_SESSION['phpgw_info']['admin']['server']['sessions_checkip'] ? "ip," : "")."browser from phpgw_access_log where account_id <> 0 and lo = 0 and sessionid='{$GLOBALS['sessionid']}' limit 1",__LINE__,__FILE__);
17        $GLOBALS['phpgw']->db->next_record();
18        if($GLOBALS['phpgw']->db->row( ))
19                $_SESSION['connection_db_info']['user_auth'] = implode("",$GLOBALS['phpgw']->db->row( ));
20}
21if($_SESSION['connection_db_info']['user_auth']){
22        $invalidSession = true;
23        $http_user_agent = substr($_SERVER[ 'HTTP_USER_AGENT' ],0,199);
24        $user_ip = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? array($_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_X_FORWARDED_FOR']) : array($_SERVER['REMOTE_ADDR']);
25        $user_agent[] = ($_SESSION['phpgw_info']['admin']['server']['sessions_checkip'] ? "{$sess['session_id']}{$user_ip[0]}" : "{$sess['session_id']}").$http_user_agent;
26        if(count($user_ip) == 2) {
27                $user_agent[] = "{$sess['session_id']}{$user_ip[1]}".$http_user_agent;
28                $user_agent[] = $sess['session_id'].implode(",",array_reverse($user_ip)).$http_user_agent;
29        }
30        $pconnection_id = $_SESSION['connection_db_info']['user_auth'];
31        if(array_search($pconnection_id, $user_agent)  !== FALSE) {
32                $invalidSession = false;
33        }
34}
35if (empty($_SESSION['phpgw_session']['session_id']) || $invalidSession)
36{
37        if($_SESSION['connection_db_info']['user_auth'] && !strstr($_SERVER['SCRIPT_NAME'],"/controller.php")) {
38                error_log( '[ INVALID SESSION ] >>>>' .$_SESSION['connection_db_info']['user_auth'].'<<<< - >>>>' . implode("",$user_agent), 0 );
39                $GLOBALS['phpgw']->session->phpgw_setcookie('sessionid');
40                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw_info']['server']['webserver_url'].'/login.php?cd=10');
41        }
42
43        setcookie(session_name(),"",0); // Removing session cookie.
44        unset($_SESSION);                               // Removing session values.
45        // From ExpressoAjax response "nosession"
46        if(strstr($_SERVER['SCRIPT_NAME'],"/controller.php")){
47                echo serialize(array("nosession" => true));
48                exit;
49        }
50}
51else{
52        // From ExpressoAjax update session_dla (datetime last access). 
53        if(strstr($_SERVER['SCRIPT_NAME'],"/controller.php"))
54                $_SESSION['phpgw_session']['session_dla'] = time();
55
56}
57?>
Note: See TracBrowser for help on using the repository browser.