svnno****@sourc*****
svnno****@sourc*****
2009年 4月 22日 (水) 17:06:38 JST
Revision: 71 http://svn.sourceforge.jp/view?root=frameworkspider&view=rev&rev=71 Author: m_nakashima Date: 2009-04-22 17:06:38 +0900 (Wed, 22 Apr 2009) Log Message: ----------- 1) spiderのDATAフォルダをspider.inc.php配置フォルダからさかのぼって自動認識するようにしました。 2) HttpRequestのセッションの適正化メソッドで、セッションスコープの判断をREQUEST_URIで行っており ディレクトリインデックスにファイル名なしでアクセスした場合のセッション挙動が同フォルダ内にも関わらずひとつ 上の階層と判断されてしまい問題が発生する為PHP_SELFで判断するよう修正しました。 Modified Paths: -------------- current/DATA/lib/spider/HttpRequest.class.php current/README.txt -------------- next part -------------- Modified: current/DATA/lib/spider/HttpRequest.class.php =================================================================== --- current/DATA/lib/spider/HttpRequest.class.php 2009-04-22 02:09:50 UTC (rev 70) +++ current/DATA/lib/spider/HttpRequest.class.php 2009-04-22 08:06:38 UTC (rev 71) @@ -148,7 +148,7 @@ function setSession( $key, $value, $scope=SPIDER_SESSION_SCOPE_AUTO ) { $this->optimizeSession(); if( $scope == SPIDER_SESSION_SCOPE_AUTO ) { - $scope = dirname($_SERVER['REQUEST_URI']); + $scope = dirname($_SERVER['PHP_SELF']); } if( SPIDER_SESSION_SCOPE_GLOBAL == $scope ) { $key = $this->_getGlobalSessionKey( $key ); @@ -164,7 +164,7 @@ function getSession( $key ) { $this->optimizeSession(); $value = null; - $current_scope = dirname( $_SERVER['REQUEST_URI'] ); + $current_scope = dirname( $_SERVER['PHP_SELF'] ); while( strlen($current_scope) > 1 ) { $target_key = $current_scope.'/'.$key; if( isset( $_SESSION ) && isset($_SESSION[$target_key]) ) { @@ -185,7 +185,7 @@ */ function existsSession( $key ) { $this->optimizeSession(); - $current_scope = dirname( $_SERVER['REQUEST_URI'] ); + $current_scope = dirname( $_SERVER['PHP_SELF'] ); while( strlen($current_scope) > 1 ) { $target_key = $current_scope.'/'.$key; if( isset( $_SESSION ) && isset($_SESSION[$target_key]) ) { @@ -205,7 +205,7 @@ function removeSession( $key, $scope=SPIDER_SESSION_SCOPE_AUTO ) { $this->optimizeSession(); if( $scope == SPIDER_SESSION_SCOPE_AUTO ) { - $scope = dirname($_SERVER['REQUEST_URI']); + $scope = dirname($_SERVER['PHP_SELF']); } if( SPIDER_SESSION_SCOPE_GLOBAL == $scope ) { $key = $this->_getGlobalSessionKey( $key ); @@ -221,9 +221,9 @@ */ function optimizeSession() { if( isset( $_SESSION ) && is_array( $_SESSION ) ) { - $current_scope = dirname( $_SERVER['REQUEST_URI'] ); + $current_scope = dirname( $_SERVER['PHP_SELF'] ); foreach( $_SESSION as $key => $value ) { - if( preg_match('/^spider\\_GLOBAL\\./',$key) == 0 + if( strlen($key) > 0 && preg_match('/^spider\\_GLOBAL\\./',$key) == 0 && preg_match('/^'.CharUtility::escape_regx_str($current_scope).'/',$key) == 0 ) { unset( $_SESSION[$key] ); } Modified: current/README.txt =================================================================== --- current/README.txt 2009-04-22 02:09:50 UTC (rev 70) +++ current/README.txt 2009-04-22 08:06:38 UTC (rev 71) @@ -5,6 +5,9 @@ ** -- 2009-04-22 1) spiderのDATAフォルダをspider.inc.php配置フォルダからさかのぼって自動認識するようにしました。 +2) HttpRequestのセッションの適正化メソッドで、セッションスコープの判断をREQUEST_URIで行っており + ディレクトリインデックスにファイル名なしでアクセスした場合のセッション挙動が同フォルダ内にも関わらずひとつ + 上の階層と判断されてしまい問題が発生する為PHP_SELFで判断するよう修正しました。 -- 2009-04-21 1) HttpRequestにてセッション取得メソッドで無限ループが発生する不具合を修正しました。