{"id":668,"date":"2018-10-15T23:37:25","date_gmt":"2018-10-15T14:37:25","guid":{"rendered":"https:\/\/blog.tkouen.mydns.jp\/wordpress\/?p=668"},"modified":"2018-10-16T13:01:50","modified_gmt":"2018-10-16T04:01:50","slug":"%e8%a6%9a%e6%9b%b8php%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0%e3%81%a7ssi%e3%81%abphp%e3%82%92%e8%a8%ad%e5%ae%9aphp","status":"publish","type":"post","link":"https:\/\/devlog.nb3.jp\/wordpress\/668","title":{"rendered":"[\u899a\u66f8]PHP\u30d7\u30ed\u30b0\u30e9\u30e0\u3067SSI\u306bPHP\u3092\u8a2d\u5b9a[php]"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-569 size-thumbnail\" src=\"https:\/\/blog.tkouen.mydns.jp\/wordpress\/wp-content\/uploads\/2018\/04\/php_image-150x150.jpeg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/devlog.nb3.jp\/wordpress\/wp-content\/uploads\/2018\/04\/php_image-150x150.jpeg 150w, https:\/\/devlog.nb3.jp\/wordpress\/wp-content\/uploads\/2018\/04\/php_image-300x300.jpeg 300w, https:\/\/devlog.nb3.jp\/wordpress\/wp-content\/uploads\/2018\/04\/php_image.jpeg 640w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/>\u3068\u308a\u3042\u3048\u305a\u3001\u30bf\u30a4\u30c8\u30eb\u901a\u308a\u30fb\u30fb\u30fb<\/p>\n<p>PHP\u3067ssi\u3092\u4f7f\u7528\u3057\u3001PHP\u3092\u8aad\u307f\u8fbc\u3080\u30688k\u30d0\u30a4\u30c8\u4ee5\u4e0a\u51fa\u529b\u3059\u308b\u5834\u5408\u306b\u8a72\u5f53\u306essi\u306e\u8a18\u8ff0\u306e\u5185\u5bb9\u304c\u53d6\u5f97\u3067\u304d\u306a\u3044\u3068\u3044\u3046\u306e\u304c\u3042\u308b\u308a\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u306f8k\u30d0\u30a4\u30c8\u4ee5\u5185\u3067\u3042\u308c\u3070\u554f\u984c\u306a\u304f\u52d5\u304f\u306e\u3067\u3001ajax\u306a\u3069\u3067\u30c7\u30fc\u30bf\u306e\u53d6\u5f97\u3084\u51fa\u529b\u3092\u3059\u308b\u3068\u554f\u984c\u306a\u3044\u3067\u3059\u3002<!--more--><\/p>\n<p>\u3057\u304b\u3057\u3001\u3069\u3046\u3057\u3066\u3082\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u72b6\u614b\u30678k\u30d0\u30a4\u30c8\u3092\u8d85\u3048\u308b\u5834\u5408\u304c\u3042\u308b\u306e\u3067\u3001\u305d\u306e\u5834\u5408\u306f\u3082\u3046\u3001\u529b\u696d\u3067\u3084\u308b\u306e\u307f\u3067\u3059\u3002\u305d\u306e\u6642\u306e\u3092\u899a\u66f8\u3068\u3057\u3066\u30e1\u30e2\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\uff08\u51fa\u529b\u3059\u308b\u30d5\u30a1\u30a4\u30eb\uff09<br \/>\n.\/tmpl\/index.html<\/p>\n<pre class=\"brush: html; gutter: true\">&lt;!DOCTYPE html&gt;\r\n&lt;html&gt;\r\n&lt;head&gt;\r\n&lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;\r\n&lt;meta charset=&quot;UTF-8&quot;&gt;\r\n&lt;meta name=&quot;description&quot; content=&quot;&quot;&gt;\r\n&lt;meta name=&quot;author&quot; content=&quot;&quot;&gt;\r\n&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;\r\n&lt;title&gt;&lt;\/title&gt;\r\n&lt;!--[if lt IE 9]&gt;&lt;script src=&quot;\/\/cdn.jsdelivr.net\/html5shiv\/3.7.2\/html5shiv.min.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script src=&quot;\/\/cdnjs.cloudflare.com\/ajax\/libs\/respond.js\/1.4.2\/respond.min.js&quot;&gt;&lt;\/script&gt;\r\n&lt;![endif]--&gt;&lt;link rel=&quot;shortcut icon&quot; href=&quot;icon.ico&quot;&gt;\r\n&lt;style&gt;\r\n&lt;\/style&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;!--#include virtual=&quot;\/ssi\/header.php&quot; --&gt;\r\n\r\n&lt;dvi class=&quot;contents&quot;&gt;\r\n\u30b3\u30f3\u30c6\u30f3\u30c4\u3060\u3088\r\n&lt;\/dvi&gt;\r\n\r\n&lt;!--#include virtual=&quot;\/ssi\/footer.php&quot; --&gt;\r\n&lt;script type=&quot;text\/javascript&quot;&gt;\r\n&lt;\/script&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p>php\u30d7\u30ed\u30b0\u30e9\u30e0<br \/>\nindex.php<\/p>\n<pre class=\"brush: php; gutter: true\">&lt;?php\r\n\/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u30b9\u30bf\u30fc\u30c8\r\nsession_start();\r\n\/\/ \u3068\u308a\u3042\u3048\u3059\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u4f7f\u3046\r\n$_SESSION[&#039;count&#039;] = 0;\r\n\/\/ \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\r\n$tpl_index = &quot;.\/tmpl\/index.html&quot;;\r\n\/\/ \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u8fbc\r\n$buf = file_get_contents($tpl_index);\r\n\/\/ \u8aad\u307f\u8fbc\u3093\u3060\u5185\u5bb9\u304b\u3089include\u90e8\u5206\u306ephp\u3092\u62bd\u51fa\u3057\u3066\u3001\u5bfe\u8c61\u306e\u5185\u5bb9\u3092\u53d6\u5f97\r\n$buf = setSsiInclude($buf);\r\n\/\/ \u51fa\u529b\r\necho $buf;\r\n\r\nfunction setSsiInclude($buf)\r\n{\r\n   \t\/\/ \u6b63\u898f\u8868\u73fe\u3067\u8a72\u5f53\u306e\u90e8\u5206\u3092\u62bd\u51fa\r\n\tpreg_match_all(&quot;\/&lt;!--#include\\s+virtual=\\&quot;(.+\\.php)\\&quot;\\s+--&gt;\/&quot;, $buf, $reg);\r\n\t\/\/ \u8a72\u5f53\u306e\u90e8\u5206\u304c\u308b\u5834\u5408\u306e\u307f\u4ee5\u4e0b\u306e\u51e6\u7406\r\n\tif(isset($reg[1]) &amp;&amp; is_array($reg[1]) &amp;&amp; count($reg[1])) {\r\n\t\t\/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u30b9\u30bf\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u4e00\u65e6\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u66f8\u304d\u8fbc\u3093\u3067\u9589\u3058\u308b\r\n\t\tif (session_status() == 2) {\r\n\t\t\tsession_write_close();\r\n\t\t}\r\n\t\t\/\/ \u5bfe\u8c61\u306einclude\u90e8\u5206\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3001\u7f6e\u304d\u63db\u3048\u308b\r\n\t\t$tmp = &quot;&quot;;\r\n\t\tforeach ($reg[1] as $n=&gt;$v) {\r\n\t\t\t$s = strpos($buf, $reg[0][$n]);\r\n\t\t\t$tmp.= substr($buf, 0, $s);\r\n\t\t\t\/\/ include\u306e\u30a2\u30c9\u30ec\u30b9\u3092\u8aad\u307f\u8fbc\u3080\r\n\t\t\t$tmp.= getData($v);\r\n\t\t\t$buf = substr($buf, ($s+strlen($reg[0][$n])));\r\n\t\t}\r\n\t\t$tmp.= $buf;\r\n\t\t$buf = $tmp;\r\n\t\t\/\/ \u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u4f7f\u3048\u308b\u72b6\u614b\u3067\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u30b9\u30bf\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3001\r\n\t\t\/\/\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30b9\u30bf\u30fc\u30c8\u3059\u308b\r\n\t\tif (session_status() == 1) {\r\n\t\t\tsession_start();\r\n\t\t}\r\n\t}\r\n\t\/\/ \u7f6e\u63db\u5f8c\u306e\u5185\u5bb9\u3092\u8fd4\u3059\r\n\treturn $buf;\r\n}\r\n\r\n\/**\r\n * \u30a2\u30c9\u30ec\u30b9\u306e\u5185\u5bb9\u3092\u53d6\u5f97\r\n *\/\r\nfunction getData($url)\r\n{\r\n\t\/\/ \u30a2\u30af\u30bb\u30b9\u3057\u3066\u304d\u305f\u3068\u304d\u306e\u30d7\u30ed\u30c8\u30b3\u30eb\u3092\u53d6\u5f97\r\n\t$protcol = isset($_SERVER[&#039;HTTPS&#039;])?&#039;https:\/\/&#039;:&#039;http:\/\/&#039;;\r\n\t\/\/ \u30a2\u30af\u30bb\u30b9\u3057\u3066\u304d\u305f\u3068\u304d\u306e\u30db\u30b9\u30c8\u540d\r\n\t$host = $_SERVER[&#039;HTTP_HOST&#039;];\r\n\t\/\/ URI\u306e\u4f5c\u308b\r\n\t$uri = $protcol . $host . $url;\r\n\t\/\/ apache\u3092\u4f7f\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u30d8\u30c3\u30c0\u30fc\u3092\u53d6\u5f97\r\n\t$arh = apache_request_headers();\r\n\t\/\/ \u30e6\u30fc\u30b6\u30fc\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306f\u3001\u30a2\u30af\u30bb\u30b9\u5143\u306e\u30d6\u30e9\u30a6\u30b6\u306e\u3092\u4f7f\u7528\u3001\u7121\u3044\u5834\u5408\u306f\u3066\u304d\u3068\u3046\u306a\u3082\u306e\u3092\u4f7f\u7528\r\n\t$ua = isset($_SERVER[&#039;HTTP_USER_AGENT&#039;])?$_SERVER[&#039;HTTP_USER_AGENT&#039;]:&#039;Mozilla\/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko\/20100101 Firefox\/62.0&#039;;\r\n\t\/\/ \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u8a2d\u5b9a\r\n\t$opts = array(\r\n\t\t&#039;http&#039; =&gt; array(\r\n\t\t&#039;method&#039; =&gt; &quot;GET&quot;,\r\n\t\t\t&#039;header&#039; =&gt; array(\r\n\t\t\t\t&quot;User-Agent: {$ua}&quot;,\r\n\t\t\t\t&quot;Accept: text\/html,application\/xhtml+xml,application\/xml;q=0.9,*\/*;q=0.8&quot;,\r\n\t\t\t\t&quot;Accept-Language: ja,en-US;q=0.7,en;q=0.3&quot;,\r\n\t\t\t\t&quot;Accept-Encoding: gzip, deflate, br&quot;,\r\n\t\t\t),\r\n\t\t\t&#039;timeout&#039; =&gt; 3.0,\r\n\t\t\t&#039;ignore_errors&#039; =&gt; true,\r\n\t\t),\r\n\t\t&#039;ssl&#039; =&gt; array(\r\n\t\t\t&#039;verify_peer&#039; =&gt; false,\r\n\t\t\t&#039;verify_peer_name&#039; =&gt; false,\r\n\t\t\t&#039;allow_self_signed&#039; =&gt; true,\r\n\t\t),\r\n\t);\r\n\t\/\/ cookie\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u306e\u307e\u307ecookie\u3092\u8a2d\u5b9a\u203bphp\u306e\u30bb\u30c3\u30b7\u30e7\u30f3cookie\u3067\u4f7f\u7528\u3057\u3066\u3044\u308b\u306e\u3067\u3053\u3046\u3059\u308b\r\n\tif (is_array($arh)){\r\n\t\t$opts[&#039;http&#039;][&#039;header&#039;][] = &quot;Cookie: &quot;. $arh[&#039;Cookie&#039;];\r\n\t}\r\n\t$ctx = stream_context_create($opts);\r\n\t\/\/ \u5185\u5bb9\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002\u3067\u3001\u3044\u3061\u304a\u3046\u30b4\u30df\u3092\u53d6\u308a\u9664\u304f\r\n\treturn trim(file_get_contents($uri, false, $ctx));\r\n}<\/pre>\n<p>header.php<\/p>\n<pre class=\"brush: php; gutter: true\">&lt;?php\r\nsession_start();\r\n$_SESSION[&#039;count&#039;] = isset($_SESSION[&#039;count&#039;])?($_SESSION[&#039;count&#039;]+1):1;\r\n$count = $_SESSION[&#039;count&#039;];\r\n?&gt;&lt;div&gt;HEADER &lt;?php echo $count; ?&gt;&lt;\/div&gt;<\/pre>\n<p>footer.php<\/p>\n<pre class=\"brush: php; gutter: true\">&lt;?php\r\nsession_start();\r\n$_SESSION[&#039;count&#039;] = isset($_SESSION[&#039;count&#039;])?($_SESSION[&#039;count&#039;]+1):1;\r\n$count = $_SESSION[&#039;count&#039;];\r\n?&gt;&lt;div&gt;FOOTER &lt;?php echo $count; ?&gt;&lt;\/div&gt;<\/pre>\n<p>\u51fa\u529b\u3055\u308c\u308b\u5185\u5bb9<\/p>\n<pre class=\"brush: html; gutter: true\">&lt;!DOCTYPE html&gt;\r\n&lt;html&gt;\r\n&lt;head&gt;\r\n&lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;\r\n&lt;meta charset=&quot;UTF-8&quot;&gt;\r\n&lt;meta name=&quot;description&quot; content=&quot;&quot;&gt;\r\n&lt;meta name=&quot;author&quot; content=&quot;&quot;&gt;\r\n&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;\r\n&lt;title&gt;&lt;\/title&gt;\r\n&lt;!--[if lt IE 9]&gt;&lt;script src=&quot;\/\/cdn.jsdelivr.net\/html5shiv\/3.7.2\/html5shiv.min.js&quot;&gt;&lt;\/script&gt;\r\n&lt;script src=&quot;\/\/cdnjs.cloudflare.com\/ajax\/libs\/respond.js\/1.4.2\/respond.min.js&quot;&gt;&lt;\/script&gt;\r\n&lt;![endif]--&gt;&lt;link rel=&quot;shortcut icon&quot; href=&quot;icon.ico&quot;&gt;\r\n&lt;style&gt;\r\n&lt;\/style&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;div&gt;HEADER 1&lt;\/div&gt;\r\n\r\n&lt;dvi class=&quot;contents&quot;&gt;\r\n\u30b3\u30f3\u30c6\u30f3\u30c4\u3060\u3088\r\n&lt;\/dvi&gt;\r\n\r\n&lt;div&gt;FOOTER 2&lt;\/div&gt;\r\n&lt;script type=&quot;text\/javascript&quot;&gt;\r\n&lt;\/script&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u3068\u308a\u3042\u3048\u305a\u3001\u30bf\u30a4\u30c8\u30eb\u901a\u308a\u30fb\u30fb\u30fb PHP\u3067ssi\u3092\u4f7f\u7528\u3057\u3001PHP\u3092\u8aad\u307f\u8fbc\u3080\u30688k\u30d0\u30a4\u30c8\u4ee5\u4e0a\u51fa\u529b\u3059\u308b\u5834\u5408\u306b\u8a72\u5f53\u306essi\u306e\u8a18\u8ff0\u306e\u5185\u5bb9\u304c\u53d6\u5f97\u3067\u304d\u306a\u3044\u3068\u3044\u3046\u306e\u304c\u3042\u308b\u308a\u307e\u3059\u3002 \u3053\u308c\u306f8k\u30d0\u30a4\u30c8\u4ee5\u5185\u3067\u3042\u308c\u3070\u554f\u984c\u306a\u304f\u52d5\u304f\u306e\u3067\u3001ajax\u306a &hellip; <a href=\"https:\/\/devlog.nb3.jp\/wordpress\/668\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,9,28],"tags":[27,20,150],"class_list":["post-668","post","type-post","status-publish","format-standard","hentry","category-php","category-program","category-28","tag-memo","tag-php-2","tag-ssi"],"_links":{"self":[{"href":"https:\/\/devlog.nb3.jp\/wordpress\/wp-json\/wp\/v2\/posts\/668","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devlog.nb3.jp\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devlog.nb3.jp\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devlog.nb3.jp\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devlog.nb3.jp\/wordpress\/wp-json\/wp\/v2\/comments?post=668"}],"version-history":[{"count":4,"href":"https:\/\/devlog.nb3.jp\/wordpress\/wp-json\/wp\/v2\/posts\/668\/revisions"}],"predecessor-version":[{"id":672,"href":"https:\/\/devlog.nb3.jp\/wordpress\/wp-json\/wp\/v2\/posts\/668\/revisions\/672"}],"wp:attachment":[{"href":"https:\/\/devlog.nb3.jp\/wordpress\/wp-json\/wp\/v2\/media?parent=668"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devlog.nb3.jp\/wordpress\/wp-json\/wp\/v2\/categories?post=668"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devlog.nb3.jp\/wordpress\/wp-json\/wp\/v2\/tags?post=668"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}