 |
|
|  |
¼¼¼ÇÀ» ÀÌ¿ëÇÑ µ¿½Ã ·Î±×ÀÎ ¹æÁö |
|
|
 |
13³â Àü |
$ssdir = $DOCUMENT_ROOT."/_session" ;
$idletime = 10800 ; // Áö¿¬½Ã°£ 3½Ã°£
function CreateSession($id) {
global $ssdir ;
global $idletime ;
global $_SERVER ;
// unique ½Äº°ÀÚ ¹ß»ý
$ssid = "" ;
for( $i = 1 ; $i <= 8 ; $i++ ) {
mt_srand((double)microtime()*1000000) ;
do {
$randval = mt_rand(48,122) ;
} while ( ( 58 <= $randval && 64 >= $randval ) || ( 91 <= $randval && 96 >= $randval ) ) ;
$ssid .= chr($randval) ;
}
$ipaddr = $_SERVER["REMOTE_ADDR"] ;
$sskey = $id."_".$ssid."_".$ipaddr ; // ¼¼¼Ç»ý¼º¿Ï·á
for( $i = 0 ; $i < strlen($id) ; $i++ ) $ssdir .= "/".$id[$i] ;
$ssfile = $ssdir ."/".$sskey ; // ¼¼¼ÇÆÄÀϸí
// µð·ºÅ丮»ý¼º
$tmpdir = $ssdir ;
for( $i = 0 ; $i < strlen($id) ; $i++ ) {
$tmpdir .= "/".$id[$i] ;
if( !is_dir($tmpdir) ) mkdir($tmpdir,0775) ;
clearstatcache() ;
}
// µ¿ÀÏ ID ÀÇ ¼¼¼ÇÈÀÏÀÌ Á¸ÀçÇÏ´ÂÁö È®ÀÎ
$hd = opendir($tmpdir) ;
while( $filename = readdir($hd) ) {
clearstatcache() ;
if( filetype( $tmpdir."/".$filename ) == "dir" ) continue ; // µð·ºÅ丮¸é ¹«½ÃÇÑ´Ù.
clearstatcache() ;
if( preg_match( "/^$id_/", $filename ) ) { // µ¿ÀÏ ID ÀÇ ¼¼¼ÇÈÀÏÀÌ Á¸ÀçÇÑ´Ù¸é
$mtime = filemtime($tmpdir."/".$filename) ; // ¼¼¼ÇÈÀÏÀÇ modify ½Ã°£À» ±¸ÇÑ´Ù.
$ctime = time() ;// ÇöÀç½Ã°£À» ±¸ÇÑ´Ù.
if( ($ctime - $mtime) < $idletime ) { // idletime À» ÃÊ°úÇÏ´ÂÁö È®ÀÎ
closedir($hd) ;
$prev = preg_split("/_/", $filename) ; // ÀÌÀü »ç¿ëÀÚÀÇ ssid ¸¦ ±¸ÇÑ´Ù.
if($_member_code){
## ÀÌ¹Ì ´Ù¸¥ »ç¿ëÀÚ°¡ Á¢¼ÓÁßÀ̰ųª ·Î±×¾Æ¿ôÀÌ Á¦´ë·Î µÇÁö ¾Ê¾ÒÀ½À» ¾Ë·ÁÁÖ´Â °æ°í¸Þ½ÃÁö
}
}
else
unlink($tmpdir."/".$filename) ; // idletime À» ³Ñ±ä °æ¿ì ÀÌÀü¼¼¼ÇÈÀÏ »èÁ¦
break ;
}
}
@closedir($hd) ;
touch($ssfile) ; // ¼¼¼ÇÈÀÏ»ý¼º
// print "¼¼¼ÇÅ°ÈÀϸí : $ssfile, $tmpdir" ;
setcookie("sskey", $sskey, 0, "/" ) ;
}
function SessionCheck() {
global $ssdir ;
global $idletime ;
global $_COOKIE ;
$sskey = $_COOKIE[sskey] ;
// ¼¼¼ÇÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì °æ°í¸Þ¼¼Áö
if( $sskey == NULL ){
## °æ°í ¸Þ½ÃÁö ÈÄ ·Î±×ÀÎ ÆäÀÌÁö·Î À̵¿
}
$tmp = preg_split("/_/", $sskey) ;
$id = $tmp[0] ; // »ç¿ëÀÚÀÇ id ¸¦ ±¸ÇÑ´Ù.
for( $i = 0 ; $i < strlen($id) ; $i++ ) $ssdir .= "/".$id[$i] ;
$ssfile = $ssdir ."/".$sskey ; // ¼¼¼ÇÆÄÀϸí
clearstatcache() ;
if( file_exists($ssfile) ) { // ¼¼¼ÇÆÄÀÏÀÌ Á¸ÀçÇÏ´Â °æ¿ì
$mtime = filemtime($ssfile) ; // ¼¼¼ÇÈÀÏÀÇ modify ½Ã°£À» ±¸ÇÑ´Ù.
$ctime = time() ; // ÇöÀç½Ã°£À» ±¸ÇÑ´Ù.
if( ($ctime - $mtime) < $idletime )
touch($ssfile) ; // idletime À» ÃÊ°úÇÏÁö ¾Ê´Â °æ¿ì file ¼öÁ¤½Ã°£ °»½Å
else {
## 3½Ã°£ ÀÌ»ó »ç¿ë¾øÀ¸¹Ç·Î °æ°í ¸Þ½ÃÁö¹× ·Î±×ÀÎ ÆäÀÌÁö·Î À̵¿
}
}else{
## ¼¼¼ÇÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì ·Î±×¾Æ¿ô ÆäÀÌÁö·Î À̵¿
}
}
|
|
̵̧ : 595 |
̵̧
¸ñ·Ï
|
|
|  |
|