웹마스터 팁

php열고
//행복한고니님의 따끔한 조언을 바탕으로 약간 수정했습니다.
//이걸 만들어 놓고 보니 왜 만들었는지 모르겟네요..;;
//고수님들의 조언 부탁드리며..;;
//설명 몇자를 적습니다.
//
//우선 세션저장하실때 맨 마지막에 time()을 저장해주세요..
//ex)sid|s:32:"5e58d0b6166ddbb747452e5ba26c251c";time|i:1052703596;
//그리고 session_save_path("경로");를 정해주세요.
//저는 "data/__SessionTMP" 이렇게 정해놨습니다.
//그리고 실행하시면 되는데요..;;
//
//
$dirhandle = opendir("data/__SessionTMP");//세션저장 디렉토리 핸들얻기.

while($filename = readdir($dirhandle)){//얻은 핸들을 이용해서 디렉토리안의 파일/서브디렉토리 읽어와서 리스트로 뿌림.
$filepath = "data/__SessionTMP/".$filename;//얻은 파일이름앞에 세션디렉토리 붙여 완전한 패스를 만듬.
$filesize = filesize($filepath);//파일의 사이즈를 체크함.

        if($filesize == 0 && ($filename != "." && $filename !="..")){//파일크기가 0 bytes이고 파일이름에 "."이나 ".."이 아닌 파일만 ↓(아랫줄 설명)
                unlink($filepath);//파일만 삭제함.(한마디로..파일크기 0인 세션파일을 삭제한다는 소린데요..;; 저 같은 경우..홈 접속시 무조건 세션파일이 생성되서 로그인 안하시는분들이 파일크기 0인 세션파일들이 마니 남아서 이런방법을 섰습니다. 리로드란표현을 잘못 써서..;; 행복한고니님한테 따꿈한 한마디 듣고..다시 수정했습니다.;;)
        }else if($filename != "." && $filename !=".."){//이건..파일크기가 0이 아닌것만 체크하는 if문..;;
                $line = file($filepath);//파일크가 0이 아닌 파일의 내용을 읽어옴.
                while(list($key,$val) = each($line)){//라인별루 뿌리는 건데..;; 세션은 라인 한줄로 만들어지져? ;;; 이건 별루 필요 없는거 라는 생각이..;; 대충 넘어가고..;;
                        $temp=explode(":",$val);//하턴 가지고온 라인값을 ":"로 구분해서..
                        $timepoint=count($temp)-1;//맨 마지막 ":"의 뒷부분을 가져옴..(세션저장하실때 맨 마지막에 time()를 넣주셔야..;;
                        $timecheck=$temp[$timepoint];//그 뒷부분 값을 $timecheck에 저장.
                        $temp=explode(";",$timecheck);//세션저장시 항목별 저장값의 맨 마지막에 붙는 ";"를 체크해서
                        if(!eregi(""",$temp[0])){// ";"이거 앞의 숫자(time값)만 뽑아옴.
                                $checkdate = $temp[0];//그 값을 $checkdate 에 저장
                                if($checkdate+(60*60*12) < time()){//$checkdate값에 반나절을 더한 값이 현재시간보다 작으면
                                        unlink($filepath);//파일 지움..
                                }
                        }
        
                }
        
        }
}
closedir($dirhandle);//세션저장 디렉토리 핸들닫기
//
//아...만들어 놓고 보니..왜 만들었는지..몰겠따..;;
//
//이거 어디에 필요할까요? -0-;; 냠..-0-;;
//
//구람..즐거운 하루 되세요~~
//
//p.s: 그리고 php.ini를 보면 maxlifetime를 통해서도 삭제가 가능합니다.
//
//       행복한고니님이 말씀하신 session_set_save_handler()를 통해서도 가능합니다.
//
//       아래의 예를 보시기 바랍니다. 출처는 kr.php.net입니다.
//      
//       그리고 제로보드 암만 뒤져도..;; session_set_save_handler() 이고 안보여염..;; 에혀..;;
//
//       그리고..;; 암만 뒤져봐도..세션파일 앞에 파일명 정해주는것은 모르겠네염..;; 머리가 안저아서..;;php닫고

예 1. session_set_save_handler() example

function open ($save_path, $session_name) {
  global $sess_save_path, $sess_session_name;
      
  $sess_save_path = $save_path;
  $sess_session_name = $session_name;
  return(true);
}

function close() {
  return(true);
}

function read ($id) {
  global $sess_save_path, $sess_session_name;

  $sess_file = "$sess_save_path/sess_$id";
  if ($fp = @fopen($sess_file, "r")) {
    $sess_data = fread($fp, filesize($sess_file));
    return($sess_data);
  } else {
    return("");
  }

}

function write ($id, $sess_data) {
  global $sess_save_path, $sess_session_name;

  $sess_file = "$sess_save_path/sess_$id";
  if ($fp = @fopen($sess_file, "w")) {
    return(fwrite($fp, $sess_data));
  } else {
    return(false);
  }

}

function destroy ($id) {
  global $sess_save_path, $sess_session_name;
      
  $sess_file = "$sess_save_path/sess_$id";
  return(@unlink($sess_file));
}

/*********************************************
* WARNING - You will need to implement some *
* sort of garbage collection routine here.  *
*********************************************/
function gc ($maxlifetime) {
  return true;
}

session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");

session_start();

// proceed to use sessions normally

아..생각 나따..-0-;;

원래 만들려던 목적에서 벗어 났네요..;;

로그인시 세션저장하는 값중 id값을 입력해서..

세션저장된 값에 id가 있는거면 하루정도 나두고..

id값이 없는 세션은 과감하게 팍팍 지워버린다는..;;

이런걸 만들려고 했는데..;;

아~~~~~~~ 모르겠다..-0-;;

그리고...중복로그인 방지에 관한 좋은 조언즘 부탁드립니다..;;

유용한 정보가 있는곳이라도요..;; 흑흑~~
제목 글쓴이 날짜
나만의 미니홈 만들기 ㅡ list.php , 디비 테이블 생성 [6] file 예뜨락 2004.11.26
나만의 미니홈 만들기 ㅡ 미니홈 생성 페이지 [3] file 예뜨락 2004.11.20
나만의 미니홈 만들기 ㅡ 기초적인 관리 페이지 [3] file 예뜨락 2004.11.20
나만의 미니홈 만들기 ㅡ 메인 기초 설계3 .레이아웃 [2] file 예뜨락 2004.11.19
나만의 미니홈 만들기 ㅡ 메인 기초 설계 .home.php [12] file 예뜨락 2004.11.17
나만의 미니홈 만들기 ㅡ 글쓰기에 앞서... [1] 예뜨락 2004.11.17
PHP프로그램에 간단한 인증(로그인) 걸기. [15] Lepas 2004.08.09
히어닥 문법 활용 [14] ☺심심 2004.07.13
해당 ftp 파일 서버에서 다른곳의 ftp 파일 서버로 백업용도 및 전송하기.. [9] 김동욱 2004.05.30
제로카운터 쉽게 설치하기 [26] file 대류 2004.01.17
세션을 이용한 관리자 모드 구축하기 3강 [6] 박정호 2003.12.09
세션을 이용한 관리자 모드 구축하기 2강 [6] 박정호 2003.12.09
세션을 이용한 관리자 모드 구축하기 1강(중복?) 박정호 2003.12.09
한꼬마의 제로보드 이용법 (sql로 테이블 호출) [2] 한꼬마 2003.11.26
[Lotto 6/45] 로또 추첨 구현하기~ [5] file 전원주 2003.11.21
한꼬마의 제로보드 활용방법 (로그인 값 알아 보기) [3] 한꼬마 2003.11.20
홈페이지 관리자 모드 구축하기 (HTTP 인증, 중복 맞음) [10] file 9000㎒ 2003.11.01
알기쉬운 웹용 MySQL 관리도구, phpMyAdmin 설치하기 [10] 허창원 2003.10.11
제로보드 + MSN 메신저 (작성글에 리플이나 코멘트가 달리면 MSN으로 알려준다?) [18] file HungryMania 2003.08.01
세션파일 크기/만들어진 시간체크해서 정해진 시간이후엔 파일 지우기?;; (라고 써야되낭? ;;) [6] 다오케이 2003.05.12