강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

세션정보를 DB에 넣고 중복로그인 막고 사이트 통합로그인
작성자 : 13 김영철
등록날짜 : 2009.01.13 23:02
16,914
안녕하세요..

 

중복 로그인 부분 찾느라 힘드신 분들 많으시져..

 

저도 찾다가 못찼았지만..(asp는요)제가 지금 올릴건 죄송하지만 php입니다..

보시고 많은분들이 도움이 되셨음 하구요..

이걸 보시고 asp로 구현 가능하신분은 소스좀 올려 주셨으면 하네요..(부탁입니다. ^^v)

수고들 하세요...

 

아참 그리고 이글은 저도 퍼온 글입니다.

 

 

DB클래스는 넣지 않습니다. 참고정도 하시라고 공개합니다. 여기 게시판에서 팁도 좀 얻었습니다. 잘 보시고 응용해 보세요!

세션구울 때 DB를 사용합니다. 그리고 중복로그인을 막고, 2차도메인을 사용하는 사이트에서 통합로그인이 가능토록한 소스입니다.

늘 행복하세요!

====== 아래부터 소스입니다. ==============

<?php
//!! eZSession DB (세션 DB핸들링 및 통합로그인)
/*

CREATE TABLE "ezsession_session" (
"sesskey" varchar(33) NOT NULL,
"expiry" int4 NOT NULL,
"value" text NOT NULL,
"uid" int4 NOT NULL,
"security" varchar(1) NOT NULL,
"remoteip" varchar(20),
CONSTRAINT "ezsession_session_pkey" PRIMARY KEY ("sesskey")
);

// start session handling
include_once( "classes/ezsession.php" );

session_set_save_handler ("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
session_set_cookie_params( 0, "/", ".ohmytravel.com" );
session_start();
*/

include_once( "classes/ezdb.php" );

$ini =& INIFile::globalINI();
$SesstionTimeOut = 30 * 60;
$maxlifetime = $SesstionTimeOut;


function sess_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 sess_close()
{
return true;
}


function sess_read( $key )
{
global $sess_save_path, $sess_session_name;

$db =& eZDB::globalDatabase();

$value_array = array();

$db->array_query( $value_array, "SELECT value FROM ezsession_session WHERE sesskey='$key' AND expiry > " . time() );

if( count( $value_array ) == 1 )
{
// 세션시간이 현재시간보다 크다면 정보를 가져온다.
return $value_array[0][$db->fieldName("value")];
}
else
{
$db->query( "DELETE FROM ezsession_session WHERE sesskey='$key'" );
return false;
}
}


function sess_write( $key, $sess_data )
{
global $sess_save_path, $sess_session_name, $maxlifetime;

$db =& eZDB::globalDatabase();
$ret = false;

$session_array = array();
$check_array = array();

$expiry = time() + $maxlifetime;
$value = addslashes( $sess_data );
$remoteip = $_SERVER["REMOTE_ADDR"];

// 세션정보가 존재하는지 체크
$db->array_query( $session_array, "SELECT * FROM ezsession_session WHERE sesskey='$key' AND value IS NOT NULL" );

if ( count( $session_array ) == 1 ) // 세션업데이트 - DB의 시간이 현재시간보다 크면 계속 시간을 업데이트 시켜 세션을 유지.
{
$res = $db->query( "UPDATE ezsession_session SET expiry='$expiry' WHERE sesskey='$key' AND expiry > " . time() );

if( $res == true )
$ret = true;
}
else if ( count( $session_array ) == 0 ) // 세션정보가 없는 경우. DB에 세션을 추가한다.
{
if ( $sess_data )
{
$uid = $GLOBALS['ezuser_session_id'];

// 이중 로그인 차단! 흐흐~ 주기넹! 완벽한 중복로그인 차단이얌! ㅋㅋㅋ~
$db->array_query( $check_array, "SELECT value FROM ezsession_session WHERE uid='$uid' AND remoteip!='$remoteip'" );

// 중복로그인을 검사하기 위한 필드. O 정상, X 중복로그인.
$security = "O";
if ( count( $check_array ) == 1 )
{
$security = "X";
}

// lock the table
$db->begin();
$db->lock( "ezsession_session" );

// 세션추가 - 로그인했을 경우 $sess_data 정보가 한번 넘어온다. 그 때만 추가한다.
$res = $db->query( "INSERT INTO ezsession_session ( sesskey, expiry, value, uid, security, remoteip ) VALUES ( '$key', '$expiry', '$value', '$uid', '$security', '$remoteip' )" );

if ( $res == true )
$ret = true;
}
}

$db->unlock();

if ( $ret == false )
$db->rollback( );
else
$db->commit();

return $ret;
}


function sess_destroy( $key )
{
global $sess_save_path, $sess_session_name;

$db =& eZDB::globalDatabase();

$db->query( "DELETE FROM ezsession_session WHERE sesskey='$key'" );

return true;
}


/*********************************************
* WARNING - You will need to implement some *
* sort of garbage collection routine here. *
*********************************************/
function sess_gc( $maxlifetime )
{
$db =& eZDB::globalDatabase();

$db->query( "DELETE FROM ezsession_session WHERE expiry < " . time() );

return true;
}


// 세션 핸들링 (도메인 입력시 1차도메인 앞에 .(점)을 찍어야 한다.)
session_set_save_handler ("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
session_set_cookie_params( 0, "/", ".domain.com" );
session_start(); 

[출처] 

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
3285 이것은 AI파일 미리보기입니다. 댓글3 M 최고의하루 01.15 3587
3284 이미지미리보기pds파일미리보기파일입니다^^ 댓글2 99 단국강토 01.14 2826
3283 동영상 캡쳐(Capture) 아주 쉽게 하기~ 99 단국강토 01.14 2616
3282 자판기안의 특수문자 99 단국강토 01.13 2531
3281 ntdll.dll 오류 해결방법 M 최고관리자 01.12 4393
3280 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3099
3279 옛날 기사를 찾아보고 싶을때 99 단국강토 01.08 2231
3278 CD 음악 mp3로 바꾸기 99 단국강토 01.08 2500
3277 알씨로 초간단 동영상 슬라이드쇼 만들기 99 단국강토 01.07 2842
3276 IP 추적은 어떻게 하는가? 99 단국강토 01.07 2392
3275 일본어로 된 웹을 한글로 즐기기 99 단국강토 01.06 2352
3274 이것은 AI파일 미리보기입니다. 댓글2 M 최고의하루 01.15 4030
3273 이미지미리보기pds파일미리보기파일입니다^^ 99 단국강토 01.14 2448
3272 동영상 캡쳐(Capture) 아주 쉽게 하기~ 99 단국강토 01.14 2783
3271 공유기 차단 무력화 시키는 법 99 단국강토 01.13 3541
3270 자판기안의 특수문자 99 단국강토 01.13 2364
3269 ntdll.dll 오류 해결방법 M 최고의하루 01.12 3661
3268 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3226
3267 옛날 기사를 찾아보고 싶을때 99 단국강토 01.08 2169
3266 CD 음악 mp3로 바꾸기 99 단국강토 01.08 2485
3265 알씨로 초간단 동영상 슬라이드쇼 만들기 99 단국강토 01.07 3311
3264 IP 추적은 어떻게 하는가? 99 단국강토 01.07 2212
3263 일본어로 된 웹을 한글로 즐기기 99 단국강토 01.06 2308
3262 [컴퓨터 키보드, 특수문자 정식 명칭들] M 최고의하루 12.18 3700
3261 하드,CPU,RAM 지원표 M 최고의하루 12.18 2584
3260 award bios 어워드 바이오스 설정법 M 최고의하루 12.18 3943
3259 내장 그래픽카드 죽이는 법 M 최고의하루 12.04 4881
3258 컴퓨터 조립 M 최고의하루 12.04 2830
3257 USB 버젼 속도 차이 2 천진난만 02.20 2375
3256 제가 사용하고 있는 마케팅프로그램입니다 댓글1 3 천지인 05.23 13192
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취