{"id":1332,"date":"2025-10-31T05:23:00","date_gmt":"2025-10-30T20:23:00","guid":{"rendered":"https:\/\/touhyo.com\/blog\/?p=1332"},"modified":"2025-10-31T17:58:32","modified_gmt":"2025-10-31T08:58:32","slug":"ajax-session-verification","status":"publish","type":"post","link":"https:\/\/touhyo.com\/blog\/ajax-session-verification\/","title":{"rendered":"\u88cf\u5074\u3067\u72b6\u614b\u3092\u78ba\u8a8d\u3059\u308b"},"content":{"rendered":"\n<p>\u5225\u6848\u4ef6\u3067\u30bb\u30ec\u30af\u30c8\u30dc\u30c3\u30af\u30b9\u306e\u5207\u308a\u66ff\u3048\u6642\u306b\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067\u30ea\u30ed\u30fc\u30c9\u3055\u308c\u308b\u52d5\u4f5c\u3092\u518d\u8aad\u8fbc\u307f\u3055\u305b\u305a\u306b\u975e\u540c\u671f\u3067\u901a\u4fe1\u3059\u308b\u4ed5\u69d8\u3078\u5909\u66f4\u3002\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u9762\u304b\u3089\u30bb\u30c3\u30b7\u30e7\u30f3\u30c8\u30fc\u30af\u30f3\u3092\u767a\u884c\u3057\u3066\u3044\u305f\u306e\u3067\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u5207\u308c\u305f\u969b\u306b\u5207\u308a\u66ff\u3048\u304c\u7121\u53cd\u5fdc\u306b\u306a\u308b\u73fe\u8c61\u304c\u3042\u308a\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u30bb\u30c3\u30b7\u30e7\u30f3\u7528\u306e\u30bf\u30b0\u306f\u4e0b\u8a18\u3067\u3059\u306d\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#34362e;color:#efefe1\">HTML<\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F8F8F2\">&lt;<\/span><span style=\"color: #F92672\">input<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">type<\/span><span style=\"color: #F8F8F2\">=<\/span><span style=\"color: #E6DB74\">&quot;hidden&quot;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">name<\/span><span style=\"color: #F8F8F2\">=<\/span><span style=\"color: #E6DB74\">&quot;token&quot;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">value<\/span><span style=\"color: #F8F8F2\">=<\/span><span style=\"color: #E6DB74\">&quot;<\/span><span style=\"color: #F44747\">&lt;<\/span><span style=\"color: #E6DB74\">?= htmlspecialchars($_SESSION[&#39;token&#39;]) ?&gt;&quot;<\/span><span style=\"color: #F8F8F2\">&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306b\u6700\u4e0a\u90e8\u3067\u5224\u5b9a\u3059\u308b\u3053\u3068\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#34362e;color:#efefe1\">PHP<\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (<\/span><span style=\"color: #66D9EF\">isset<\/span><span style=\"color: #F8F8F2\">($_GET[<\/span><span style=\"color: #E6DB74\">&#39;check&#39;<\/span><span style=\"color: #F8F8F2\">])) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">\t<\/span><span style=\"color: #66D9EF\">header<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;Content-Type: application\/json&#39;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">\t$active <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF\">isset<\/span><span style=\"color: #F8F8F2\">($_SESSION[<\/span><span style=\"color: #E6DB74\">&#39;token&#39;<\/span><span style=\"color: #F8F8F2\">]);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">\t<\/span><span style=\"color: #66D9EF\">echo<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF\">json_encode<\/span><span style=\"color: #F8F8F2\">([<\/span><span style=\"color: #E6DB74\">&#39;active&#39;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">=&gt;<\/span><span style=\"color: #F8F8F2\"> $active]);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">\t<\/span><span style=\"color: #F92672\">exit<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u305d\u3057\u3066html\u306e\u6700\u4e0b\u90e8\u306760\u79d2\u3054\u3068\u306b\u72b6\u614b\u3092\u30c1\u30a7\u30c3\u30af\u3002<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#34362e;color:#efefe1\">JavaScript<\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F92672\">async<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">checker<\/span><span style=\"color: #F8F8F2\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">\t<\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> res <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">await<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">fetch<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;?check=1&#39;<\/span><span style=\"color: #F8F8F2\">, { credentials: <\/span><span style=\"color: #E6DB74\">&#39;include&#39;<\/span><span style=\"color: #F8F8F2\"> });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">\t<\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> data <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">await<\/span><span style=\"color: #F8F8F2\"> res.<\/span><span style=\"color: #A6E22E\">json<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">\t<\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> data.active;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6E22E\">setInterval<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #F92672\">async<\/span><span style=\"color: #F8F8F2\"> () <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">\t<\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> active <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">await<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">checker<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">\t<\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (<\/span><span style=\"color: #F92672\">!<\/span><span style=\"color: #F8F8F2\">active) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">\t\tlocation.href <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;\/login.php&#39;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">\t}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}, <\/span><span style=\"color: #AE81FF\">60000<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u30d9\u30b9\u30c8\u306a\u65b9\u6cd5\u3067\u5b9f\u88c5\u3059\u308b\u306e\u304c\u304a\u3059\u3059\u3081\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5225\u6848\u4ef6\u3067\u30bb\u30ec\u30af\u30c8\u30dc\u30c3\u30af\u30b9\u306e\u5207\u308a\u66ff\u3048\u6642\u306b\u30d6\u30e9\u30a6\u30b6\u4e0a\u3067\u30ea\u30ed\u30fc\u30c9\u3055\u308c\u308b\u52d5\u4f5c\u3092\u518d\u8aad\u8fbc\u307f\u3055\u305b\u305a\u306b\u975e\u540c\u671f\u3067\u901a\u4fe1\u3059\u308b\u4ed5\u69d8\u3078\u5909\u66f4\u3002\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u9762\u304b\u3089\u30bb\u30c3\u30b7\u30e7\u30f3\u30c8\u30fc\u30af\u30f3\u3092\u767a\u884c\u3057\u3066\u3044\u305f\u306e\u3067\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u5207\u308c\u305f\u969b\u306b\u5207\u308a\u66ff\u3048\u304c\u7121\u53cd\u5fdc\u306b\u306a\u308b\u73fe\u8c61\u304c\u3042 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"ja","_original_post":"https:\/\/touhyo.com\/blog\/?p=1332","footnotes":""},"categories":[1],"tags":[],"class_list":["post-1332","post","type-post","status-publish","format-standard","hentry","category-memo","ja"],"_links":{"self":[{"href":"https:\/\/touhyo.com\/blog\/wp-json\/wp\/v2\/posts\/1332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/touhyo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/touhyo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/touhyo.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/touhyo.com\/blog\/wp-json\/wp\/v2\/comments?post=1332"}],"version-history":[{"count":4,"href":"https:\/\/touhyo.com\/blog\/wp-json\/wp\/v2\/posts\/1332\/revisions"}],"predecessor-version":[{"id":1381,"href":"https:\/\/touhyo.com\/blog\/wp-json\/wp\/v2\/posts\/1332\/revisions\/1381"}],"wp:attachment":[{"href":"https:\/\/touhyo.com\/blog\/wp-json\/wp\/v2\/media?parent=1332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/touhyo.com\/blog\/wp-json\/wp\/v2\/categories?post=1332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/touhyo.com\/blog\/wp-json\/wp\/v2\/tags?post=1332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}