>  기사  >  백엔드 개발  >  데이터베이스에 세션 저장 데이터베이스에 세션을 저장하는 방법

데이터베이스에 세션 저장 데이터베이스에 세션을 저장하는 방법

WBOY
WBOY원래의
2016-07-29 08:34:41967검색

PHP의 세션은 기본적으로 서버 측에 파일로 저장되며, 클라이언트 측에서는 쿠키를 사용하여 변수를 저장합니다. 이로 인해 보안상의 이유로 사용자가 브라우저의 쿠키를 끄면 세션 관련 문제가 발생합니다. 프로그램의 작업은 실행되지 않습니다. 따라서 세션 데이터를 데이터베이스에 저장할 수 있다면 클라이언트 설정에 제약을 받지 않고 성능과 확장성이 비약하게 된다. 프로그램에서 사용하는 핵심 함수는 session_set_save_handler 이고, php.ini 의 session.save_handler = files 를 user 로 변경해야 합니다. 여기서 논의할 환경은 linux(freesd) apache mysql php입니다.
데이터 테이블 구조: [세션]
CREATE TABLE 세션(
sesskey char(32) not null,
expiry int(11) unsigned not null,
value text not null,
PRIMARY KEY(sesskey)
);
프로그램 코드: [session_inc.php]
$SESS_DBHOST = "yourhost" /* 데이터베이스 서버 호스트 이름 */
$ SESS_DBNAME = "yourdb"; /* 데이터베이스 이름 */
$SESS_DBUSER = "youruser"; /* 데이터베이스 사용자 */
$SESS_DBPASS = "yourpassword" /* 데이터베이스 비밀번호 */
$SESS_DBH = "";
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");
function sess_open($save_path, $session_name) {
global $SESS_DBHOST, $SESS_DBNAME, $SESS_DBUSER, $SESS_DBPASS, $SESS_DBH;
if (! $SESS_DBH = mysql_pconnect($SESS_DBHOST, $SESS_DBUSER, $SESS_DBPASS)) {
echo "

  • $SESS_DBUSER로 $SESS_DBHOST에 연결할 수 없습니다.
    echo "< li>MySQL 오류: " . mysql_error();
                   ;                               SESS_DBNAME"
    die;
    return true;
    function sess_close() {
    true를 반환합니다. ;
    전역 $SESS_DBH, $SESS_LIFE;
    $qry = "sesskey = '$key' AND expiry > "
    $qid = mysql_query($qry, $ SESS_DBH);
    if (list($value) = mysql_fetch_row($qid)) {
    return $value;
    }
    return false; key , $val) {
    global $SESS_DBH, $SESS_LIFE;
    $expiry = time() $SESS_LIFE; //만료 시간
    $value = addlashes($val); " session_tbl 값에 삽입('$key', $expiry, '$value')"
    $qid = mysql_query($qry, $SESS_DBH)
    if (! $qid) {
    $ qry = "세션_tbl 설정 만료 = $expiry, 값 = '$value' WHERE sesskey = '$key' AND expiry > " . time()> $qid = mysql_query($qry, $SESS_DBH); 🎜 > }
    return $qid;
    }
    function sess_destroy($key) {
    global $SESS_DBH
    $qry = "sesskey = '$key'에서 삭제";
    $qid = mysql_query($qry, $SESS_DBH);
    return $qid;
    }
    function sess_gc($maxlifetime) {
    global $SESS_DBH; 만료되는 곳에서 session_tbl 삭제 < " . time();
    $qid = mysql_query($qry, $SESS_DBH);
    return mysql_affected_rows($SESS_DBH);
    }
    session_set_save_handler(
    " sess_open",
    "sess_close",
    "sess_read",
    "sess_write",
    "sess_destroy",
    "sess_gc")
    session_start(); ? >
    위 단계를 완료한 후 프로그램에서 session_start() 대신 require("session_inc.php")를 사용하세요.
    [이 글의 저작권은 작성자와 Oso.com에 공동으로 있습니다. 전재하실 경우 작성자와 출처를 명시해주세요.]

    위 내용은 데이터베이스 저장 세션의 내용을 포함하여 데이터베이스를 사용하여 세션을 저장하는 방법을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

  • 성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.