{"id":424,"date":"2021-12-10T16:34:01","date_gmt":"2021-12-10T07:34:01","guid":{"rendered":"https:\/\/blog.mydepot.kr\/?p=424"},"modified":"2021-12-10T16:34:01","modified_gmt":"2021-12-10T07:34:01","slug":"php-session-db%ec%97%90-%ec%a0%80%ec%9e%a5-%ec%86%8c%ec%8a%a4","status":"publish","type":"post","link":"https:\/\/blog.mydepot.kr\/?p=424","title":{"rendered":"[PHP] session DB\uc5d0 \uc800\uc7a5 \uc18c\uc2a4"},"content":{"rendered":"\n<ul class=\"wp-block-list\"><li>\uc815\ub9ac\uac00 \ub418\uc9c0 \uc54a\uc740 \uc18c\uc2a4\ub97c \uc77c\ub2e8 \uba54\ubaa8<\/li><\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php\nrequire_once $_SERVER&#x5B;&#039;DOCUMENT_ROOT&#039;].&quot;\/inc\/db_info.php&quot;;\nrequire_once $_SERVER&#x5B;&#039;DOCUMENT_ROOT&#039;].&quot;\/inc\/func\/system_func.php&quot;;\n\n\/\/ \uc138\uc158 \uc218\uba85 (\uc791\uc131&amp;\uac31\uc2e0\uc2dc \ub9c8\ub2e4 \uc2dc\uac04 \ucd94\uac00)\n\/\/ $SESS_LIFE = get_cfg_var(&quot;session.gc_maxlifetime&quot;); \/\/ PHP \uc138\uc158 \uc218\uba85 \uc124\uc815\uac12\n$SESS_LIFE = 6 * 60 * 60;\n\n\/\/ DB \uc5f0\uacb0 (open)\nfunction sess_open($save_path, $session_name){\n      global $DB_CONN, $DB_HOST, $DB_NAME, $DB_USER, $DB_PASS;\n\n      \/\/ DB \uc811\uc18d \ud655\uc778\n      if(!($DB_CONN = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME))){\n            echo &quot;CANNOT CONNECT DB : &quot;.mysqli_error($DB_CONN);\n            exit;\n      }\n\n      \/\/ DB \uc120\ud0dd \ud655\uc778\n      if(!(mysqli_select_db($DB_CONN, $DB_NAME))){\n            echo &quot;CANNOT SELECT DB : &quot;.mysqli_error($DB_CONN);\n            exit;\n      }\n\n      return true;\n}\n\n\/\/ DB \ub2eb\uae30 (close)\nfunction sess_close(){\n      return true;\n}\n\n\/\/ \uc138\uc158 \ub85c\ub4dc (read)\nfunction sess_read($key){\n      global $DB_CONN;\n      $returnVal = &quot;&quot;;\n\n      \/\/ \uc138\uc158\uc774 \uc0b4\uc544\uc788\uc744 \uacbd\uc6b0 \ub85c\ub4dc\n      $sess_query = &quot;SELECT value FROM session WHERE sesskey = &#039;$key&#039; AND expiry &gt; &quot;.time();\n      $sess_result = mysqli_query($DB_CONN, $sess_query);\n\n      if(list($value) = mysqli_fetch_row($sess_result)){\n            $returnVal = $value;\n      }\n\n      return $returnVal;\n}\n\n\/\/ \uc138\uc158 \uc791\uc131 (write)\nfunction sess_write($key, $value){\n      global $DB_CONN, $SESS_LIFE;\n\n      \/\/ IP\uac12 \ubcc0\uc218\uc5d0 \ub85c\ub4dc\n      $ip = BaseFunc::getRealClientIp();\n\n      \/\/ \ud604\uc7ac\uc2dc\uac04\uc5d0 \uc138\uc158 \uc9c0\uc18d\uc2dc\uac04 \ub354\ud558\uae30 (\uc138\uc158 \uc885\ub8cc\uc2dc\uac04)\n      $expiry = time() + $SESS_LIFE;\n\n      $value = addslashes($value);\n\n      \/\/ \uc138\uc158 \uc874\uc7ac \uc5ec\ubd80 \ud655\uc778\n      $sess_query = &quot;SELECT * FROM session WHERE sesskey = &#039;$key&#039;&quot;;\n      $sess_result = mysqli_query($DB_CONN, $sess_query);\n\n      if($sess_result-&gt;num_rows &gt; 0){\n            \/\/ \uc138\uc158 \uc874\uc7ac\uc2dc \uc5c5\ub370\uc774\ud2b8\n            $sess_query = &quot;UPDATE session SET expiry = $expiry, value = &#039;$value&#039; WHERE sesskey = &#039;$key&#039; AND expiry &gt; &quot;.time();\n            $sess_result = mysqli_query($DB_CONN, $sess_query) or die(&quot;update write err&quot;); \n      }else{\n            \/\/ \uc138\uc158 \ubbf8\uc874\uc7ac\uc2dc \ucd94\uac00\n            $sess_query = &quot;INSERT INTO session (sesskey, ip, id, expiry, value) VALUES (&#039;$key&#039;, &#039;$ip&#039;, null, $expiry, &#039;$value&#039;)&quot;;\n            $sess_result = mysqli_query($DB_CONN, $sess_query);\n      }\n\n      return $sess_result;\n}\n\n\/\/ \uc138\uc158 \uc0ad\uc81c (destroy)\nfunction sess_destroy($key){\n      global $DB_CONN;\n\n      \/\/ \ud574\ub2f9 \uc138\uc158 \uc0ad\uc81c\n      $sess_query = &quot;DELETE FROM session WHERE sesskey = &#039;&quot;.$key.&quot;&#039;&quot;;\n      $sess_result = mysqli_query($DB_CONN, $sess_query) or die(false);\n\n      return true;\n}\n\n\/\/ \uc720\ud1b5\uae30\ud55c \uc9c0\ub09c \uc138\uc158 \uc815\ub9ac (gc)\nfunction sess_gc($maxlifetime){\n      \/\/ $maxlifetime &lt;- \uc138\uc158 \uc218\uba85 PHP \uc11c\ubc84 \uc124\uc815\uac12\n      global $DB_CONN;\n\n      \/\/ \uae30\uac04 \uc9c0\ub09c \uc138\uc158 \uc0ad\uc81c\n      $sess_query = &quot;DELETE FROM session WHERE expiry &lt; &quot;.time();\n      $sess_result = mysqli_query($DB_CONN, $sess_query) or die(false);\n\n      return mysqli_affected_rows($DB_CONN);\n}\n\n\/\/ \uc138\uc158 \ud568\uc218 \ub4f1\ub85d\nsession_set_save_handler(&quot;sess_open&quot;, &quot;sess_close&quot;, &quot;sess_read&quot;, &quot;sess_write&quot;, &quot;sess_destroy&quot;, &quot;sess_gc&quot;);\n\n\/\/ \uc138\uc158 \uc2dc\uc791\nsession_start(&#x5B;\n      \/\/ &#039;cookie_lifetime&#039; =&gt; $SESS_LIFE,\n      &#039;cookie_httponly&#039; =&gt; true\n      ]);\n?&gt;\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>\uc815\ub9ac\uac00 \ub418\uc9c0 \uc54a\uc740 \uc18c\uc2a4\ub97c \uc77c\ub2e8 \uba54\ubaa8<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[8],"tags":[23,182,195],"class_list":["post-424","post","type-post","status-publish","format-standard","hentry","category-php","tag-php","tag-db","tag-session"],"modified_by":"\ucc38\ube5b\ubc14\ub2e4","_links":{"self":[{"href":"https:\/\/blog.mydepot.kr\/index.php?rest_route=\/wp\/v2\/posts\/424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mydepot.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mydepot.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mydepot.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mydepot.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=424"}],"version-history":[{"count":1,"href":"https:\/\/blog.mydepot.kr\/index.php?rest_route=\/wp\/v2\/posts\/424\/revisions"}],"predecessor-version":[{"id":425,"href":"https:\/\/blog.mydepot.kr\/index.php?rest_route=\/wp\/v2\/posts\/424\/revisions\/425"}],"wp:attachment":[{"href":"https:\/\/blog.mydepot.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mydepot.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mydepot.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}