<?xml version="1.0" encoding="UTF-8" ?><feed xmlns="http://www.w3.org/2005/Atom">
   <title type="text">PHP</title>
      <updated>2013-05-25T08:28:24+09:00</updated>
   <id>http://elkha.kr/xe/php/atom</id>
   <link rel="alternate" type="text/html" hreflang="ko" href="http://elkha.kr/xe/php"/>
   <link rel="self" type="application/atom+xml" href="http://elkha.kr/xe/php/atom"/>
   <generator uri="http://www.xpressengine.com/">XpressEngine</generator>
   <entry>
      <title>php __get($name), __set($name, $value)</title>
      <id>http://elkha.kr/xe/25299</id>
      <published>2011-05-21T15:23:53+09:00</published>
      <updated>2011-05-21T15:23:53+09:00</updated>
      <link rel="alternate" type="text/html" href="http://elkha.kr/xe/25299"/>
      <link rel="replies" type="text/html" href="http://elkha.kr/xe/25299#comment"/>
      <author>
         <name>Elkha</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;public $attribute;&lt;/p&gt;
&lt;p&gt;변수에 접근할 때마다 호출되는 함수.&lt;/p&gt;
&lt;h3&gt;__get($name)&lt;/h3&gt;
&lt;p&gt;function __get($name) {&lt;br /&gt;&amp;nbsp;return $this-&amp;gt;value;&lt;br /&gt;}&lt;/p&gt;

&lt;h3&gt;__set($name, $value)&lt;/h3&gt;
&lt;p&gt;function __get($name) {&lt;br /&gt;&amp;nbsp;$this-&amp;gt;$name = $value;&lt;br /&gt;}&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="__get()"/>
            <category term="__set()"/>
            
   </entry>
   <entry>
      <title>php 생성자 / 소멸자</title>
      <id>http://elkha.kr/xe/25291</id>
      <published>2011-05-21T14:58:28+09:00</published>
      <updated>2011-05-21T14:58:28+09:00</updated>
      <link rel="alternate" type="text/html" href="http://elkha.kr/xe/25291"/>
      <link rel="replies" type="text/html" href="http://elkha.kr/xe/25291#comment"/>
      <author>
         <name>Elkha</name>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;h3&gt;__constuctor($args)&lt;/h3&gt;
&lt;p&gt;생성자.&lt;/p&gt;
&lt;p&gt;객체가 생성될 때 호출된다.&lt;/p&gt;


&lt;h3&gt;__destruct()&lt;/h3&gt;
&lt;p&gt;소멸자&lt;/p&gt;
&lt;p&gt;클래스가 사라질 때 호출.&lt;/p&gt;
&lt;p&gt;소멸자는 파라미터를 가지지 못한다.&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="php"/>
            <category term="__constuctor"/>
            <category term="__destruct"/>
            
   </entry>
   <entry>
      <title>php 에서 파일 권한 설정</title>
      <id>http://elkha.kr/xe/4312</id>
      <published>2010-05-21T14:47:01+09:00</published>
      <updated>2010-05-21T14:47:01+09:00</updated>
      <link rel="alternate" type="text/html" href="http://elkha.kr/xe/4312"/>
      <link rel="replies" type="text/html" href="http://elkha.kr/xe/4312#comment"/>
      <author>
         <name>Elkha</name>
                  <uri>http://www.elkha.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;h3&gt;문법&lt;/h3&gt;
&lt;blockquote class=&quot;q3&quot;&gt;&lt;p&gt;chmod(file,mode) &lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;사용 예&lt;/h3&gt;
&lt;blockquote class=&quot;q3&quot;&gt;&lt;p&gt;chmod(&quot;test.txt&quot;,0600);&lt;br /&gt;chmod(&quot;test.txt&quot;,0644);&lt;br /&gt;
chmod(&quot;test.txt&quot;,0755);&lt;br /&gt;chmod(&quot;test.txt&quot;,0740);&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;</content>
                  <category term="php"/>
            <category term="chmod"/>
            <category term="파일권한"/>
            
   </entry>
   <entry>
      <title>php 쿠키 생성, 읽기</title>
      <id>http://elkha.kr/xe/4167</id>
      <published>2010-05-19T01:54:30+09:00</published>
      <updated>2010-05-19T01:57:04+09:00</updated>
      <link rel="alternate" type="text/html" href="http://elkha.kr/xe/4167"/>
      <link rel="replies" type="text/html" href="http://elkha.kr/xe/4167#comment"/>
      <author>
         <name>Elkha</name>
                  <uri>http://www.elkha.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://elkha.kr/xe/files/attach/images/3581/167/004/cookie.jpg&quot; alt=&quot;cookie.jpg&quot; style=&quot;width: 50%; height: 50%;&quot; /&gt;
&lt;/p&gt;
&lt;h3&gt;쿠키 생성&lt;/h3&gt;
&lt;blockquote class=&quot;q3&quot;&gt;&lt;p&gt;setcookie(name, value, expire, path, domain);&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;name, value, expire 정도만 입력해줘도 되며 path의 값은 &quot;/&quot; 으로 쓰는게 편하다. 각 인수는 다음과 같다.&lt;/p&gt;

&lt;table class=&quot;eTable&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
 &lt;th&gt;인수&lt;/th&gt;
 &lt;td&gt;역할&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
 &lt;th&gt;name&lt;/th&gt;
 &lt;td&gt;생성할 쿠키의 이름(변수명).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
 &lt;th&gt;value&lt;/th&gt;
 &lt;td&gt;변수 값.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
 &lt;th&gt;expire&lt;/th&gt;
 &lt;td&gt;만료 시간을 지정. time()+3600은 1시간(3600초)후 만료&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
 &lt;th&gt;path&lt;/th&gt;
 &lt;td&gt;쿠키가 저장될 경로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
 &lt;th&gt;domain&lt;/th&gt;
 &lt;td&gt;쿠키의 도메인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
 &lt;th&gt;secure&lt;/th&gt;
 &lt;td&gt;기본값은 false. true 값을 입력하면 https 전송일 때만 동작한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
 &lt;th&gt;httponly&lt;/th&gt;
 &lt;td&gt;기본값은 false. true 값을 입력하면 HTTP 프로토콜에서만 사용할 수 있으며, javascript 등에서는 적용되지 않는다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;

&lt;/table&gt;

&lt;h3&gt;쿠키 받아오기&lt;/h3&gt;
&lt;blockquote class=&quot;q3&quot;&gt;&lt;p&gt;
echo $_COOKIE[name];
&lt;/p&gt;&lt;/blockquote&gt;


&lt;h3&gt;쿠키 제거&lt;/h3&gt;
&lt;blockquote class=&quot;q3&quot;&gt;&lt;p&gt;setcookie (name, &quot;&quot;, time() - 3600);&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;만료시간을 1시간 앞당기는 방법이다.&lt;br /&gt;&lt;/p&gt;


&lt;h3&gt;관련 문서&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://kr2.php.net/manual/kr/function.setcookie.php&quot;&gt;PHP: setcookie - Manual&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sirjhswin.tistory.com/132&quot;&gt;[PHP 고급] PHP 쿠키(Cookies)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.linuxinfor.com/korean/PHP-Manual/function.setcookie.html%22&quot;&gt;setcookie&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</content>
                  <category term="php"/>
            <category term="쿠키"/>
            <category term="불러오기"/>
            <category term="생성"/>
            <category term="읽기"/>
            
   </entry>
   <entry>
      <title>php 에서 텍스트 파일을 생성, 수정하기</title>
      <id>http://elkha.kr/xe/4123</id>
      <published>2010-05-19T00:50:56+09:00</published>
      <updated>2010-05-19T01:22:13+09:00</updated>
      <link rel="alternate" type="text/html" href="http://elkha.kr/xe/4123"/>
      <link rel="replies" type="text/html" href="http://elkha.kr/xe/4123#comment"/>
      <author>
         <name>Elkha</name>
                  <uri>http://www.elkha.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://elkha.kr/xe/files/attach/images/3581/123/004/text.jpg&quot; alt=&quot;text.jpg&quot; width=&quot;477&quot; height=&quot;480&quot; style=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;액세스 모드&lt;/h3&gt;

&lt;table class=&quot;eTable&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
 &lt;th&gt;종류&lt;/th&gt;
 &lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
 &lt;th&gt;r&lt;/th&gt;
 &lt;td&gt;읽기 전용 파일 엑세스, 파일의 처음부터 엑세스 시작&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
 &lt;th&gt;r+&lt;/th&gt;
 &lt;td&gt;읽기와 쓰기 모두 가능한 파일 엑세스, 파일의 처음부터 엑세스 시작&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
 &lt;th&gt;w&lt;/th&gt;
 &lt;td&gt;파일이 있는 경우, 쓰기 전용으로 파일 엑세스, 모든 내용은 삭제한다. 파일이 없는 경우 파일을 생성한다. 처음부터 엑세스 시작&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
 &lt;th&gt;w+&lt;/th&gt;
 &lt;td&gt;읽기와 쓰기로 파일 엑세스를 하되 파일이 있을 경우 모든 내용 삭제한다. 파일이 없으면 파일을 생성한다. 처음부터 엑세스 시작&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
 &lt;th&gt;a&lt;/th&gt;
 &lt;td&gt;읽기 전용으로만 파일을 오픈한다. 파일이 없으면 파일을 생성한다. 끝에서부터 엑세스 시작하되 내용은 삭제하지 않는다.&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
 &lt;th&gt;a+&lt;/th&gt;
 &lt;td&gt;읽기, 쓰기전용으로 파일을 오픈한다. 파일이 없으면 파일을 생성한다. 끝에서부터 엑세스 시작하되 내용은 삭제하지 않는다.&lt;/td&gt;
&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;

&lt;h3&gt;명령어&lt;/h3&gt;
&lt;table class=&quot;eTable&quot;&gt;
&lt;thead&gt;
 &lt;tr&gt;&lt;th&gt;문법&lt;/th&gt;
 &lt;td&gt;용도&lt;/td&gt;
 &lt;td class=&quot;nowrap&quot;&gt;예제&lt;/td&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;

&lt;tr&gt;
 &lt;th&gt;fopen&lt;/th&gt;
 &lt;td&gt;파일을 읽어온다. 파일명, 액세스 모드를 입력. 파일을 수정하기 위해 적절한 권한이 있어야 한다.&lt;/td&gt;
 &lt;td class=&quot;nowrap&quot;&gt;$fr = fopen( $file_name , &apos;w+&apos;);&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
 &lt;th&gt;fgets&lt;/th&gt;
 &lt;td&gt;파일 내용을 변수로 불러온다.&lt;/td&gt;
 &lt;td class=&quot;nowrap&quot;&gt;$content = fgets($fr);&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
 &lt;th&gt;fputs&lt;/th&gt;
 &lt;td&gt;내용을 입력한다.&lt;/td&gt;
 &lt;td class=&quot;nowrap&quot;&gt;fputs($fr, $content);&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
 &lt;th&gt;fclose&lt;/th&gt;
 &lt;td class=&quot;&quot;&gt;파일 열기를 종료한다. &lt;/td&gt;
 &lt;td class=&quot;nowrap&quot;&gt;fclose($fr);&lt;/td&gt;
&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;

&lt;h3&gt;예제&lt;/h3&gt;
&lt;blockquote class=&quot;q3&quot;&gt;&lt;p&gt;$fr = fopen( $f_name , &apos;w+&apos;);&lt;br /&gt;fputs($fr, $content);&lt;br /&gt;fclose($fr);&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;</content>
                  <category term="php"/>
            <category term="텍스트"/>
            <category term="파일"/>
            <category term="수정"/>
            <category term="fopen"/>
            <category term="fputs"/>
            <category term="fclose"/>
            
   </entry>
   <entry>
      <title>php 암호화와 복호와</title>
      <id>http://elkha.kr/xe/4035</id>
      <published>2010-05-17T18:21:45+09:00</published>
      <updated>2010-05-19T02:47:03+09:00</updated>
      <link rel="alternate" type="text/html" href="http://elkha.kr/xe/4035"/>
      <link rel="replies" type="text/html" href="http://elkha.kr/xe/4035#comment"/>
      <author>
         <name>Elkha</name>
                  <uri>http://www.elkha.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://elkha.kr/xe/files/attach/images/3581/035/004/key%5B1%5D.jpg&quot; alt=&quot;key[1].jpg&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;XE 공식 자료실&lt;/h3&gt;
&lt;p&gt;
XE 공식 자료실 모듈은 제목에 나와있듯이 자료실 운영에 매우 유리하다.
그런데 이 모듈은 다운로드 권한을 부여할 때, 모듈 단위로 지정한다.
즉 10가지 각기 다른 권한이 있으면 자료실도 10개가 있어야 한다는 뜻.
내가 원하는 자료실은 조금 다른 형태로서, 각 회원에게 부여된 고유 권한에 따라 파일 다운로드 권한이 발생하는 것이었다.
또한 코드의 간결성을 위해 스킨상에서만 링크를 제어하는 것이다.
&lt;/p&gt;

&lt;h3&gt;보안&lt;/h3&gt;
&lt;p&gt;
각 회원마다 다운로드 권한을 부여하기 위해 열심히 고민했다. 많은 시간이 소요된 것은 사실이지만, 덕분에 php 에 대해 어느정도 익숙해진 것 같다.
아무튼 내가 생각한 방법은 크게 3가지가 있다.
&lt;/p&gt;
&lt;h4&gt;링크 숨기기&lt;/h4&gt;
&lt;p&gt;
먼저 한 가지는 권한이 있는 유저에게만 링크를 제공하는 것이다. if 구문을 사용한 쉽고 간편한 방법이다.
하지만 한번 노출된 url은 제3자에게도 다운로드 권한이 부여된다.
form 태그를 사용하면 좀 더 안전하지만, 기본적인 지식으로도 제3자에게 파일을 받을 수 있는데는 변함이 없다.
&lt;/p&gt;

&lt;h4&gt;모듈 제작&lt;/h4&gt;
&lt;p&gt;
가장 확실한 방법으로 db 정리나 XE 호환성에 매우 유리하다.
하지만 불필요한 모듈을 하나 늘리게 되는 단점이 있다.
내 목표는 스킨에서만 링크를 제어하는 것이기 때문에 추가 모듈은 무의미했다.
&lt;/p&gt;

&lt;h4&gt;비밀번호와 암호화&lt;/h4&gt;
&lt;p&gt;
내가 선택한 방법으로, 파일 정보를 비밀번호와 결합시켜 다운로드를 제공한다.
form 태그의 정보가 모두 노출되어도 비밀번호를 모르면 파일을 받을 수 없다.
지금은 실력부족으로 독립된 php 파일에서 다운로드를 처리하는게 매우 아쉽다.
&lt;/p&gt;

&lt;h3&gt;php 인코딩&lt;/h3&gt;
&lt;p&gt;php를 암호화하는 방법에는 다양한 방법이 있지만, 자료실을 제작할 때 두가지 조건은 반드시 충족해야 했다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;암호화된 정보는 제3자가 복호화할 수 없어야 한다.&lt;/li&gt;
&lt;li&gt;암호화된 정보는 원래대로 살릴 수 있어야 한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;이 조건을 만족하기 위해 많은 시간을 삽질했으며, 발견한 php 함수들은 모두 에러를 뿜어냈다.
포기하지 않고 계속 찾아다니던 중, 아예 php 스크립트를 기반으로 작성한 암호화 함수를 발견하였다.
&lt;/p&gt;

&lt;blockquote class=&quot;q3&quot;&gt;&lt;p&gt;// PHP암호화 함수&lt;br /&gt;function encrypt($data,$k) { &lt;br /&gt;&amp;nbsp;$encrypt_these_chars = &quot;1234567890ABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrstuvwxyz.,/?!$@^*()_+-=:;~{}&quot;;&lt;br /&gt;&amp;nbsp;$t = $data;&lt;br /&gt;&amp;nbsp;$result2;&lt;br /&gt;&amp;nbsp;$ki;&lt;br /&gt;&amp;nbsp;$ti;&lt;br /&gt;&amp;nbsp;$keylength = strlen($k);&lt;br /&gt;&amp;nbsp;$textlength = strlen($t);&lt;br /&gt;&amp;nbsp;$modulo = strlen($encrypt_these_chars);&lt;br /&gt;&amp;nbsp;$dbg_key;&lt;br /&gt;&amp;nbsp;$dbg_inp;&lt;br /&gt;&amp;nbsp;$dbg_sum;&lt;br /&gt;&amp;nbsp;for ($result2 = &quot;&quot;, $ki = $ti = 0; $ti &amp;lt; $textlength; $ti++, $ki++) {&lt;br /&gt;&amp;nbsp; if ($ki &amp;gt;= $keylength) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; $ki = 0;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; $dbg_inp += &quot;[&quot;+$ti+&quot;]=&quot;+strpos($encrypt_these_chars, substr($t, $ti,1))+&quot; &quot;;&amp;nbsp; &lt;br /&gt;&amp;nbsp; $dbg_key += &quot;[&quot;+$ki+&quot;]=&quot;+strpos($encrypt_these_chars, substr($k, $ki,1))+&quot; &quot;;&amp;nbsp; &lt;br /&gt;&amp;nbsp; $dbg_sum += &quot;[&quot;+$ti+&quot;]=&quot;+strpos($encrypt_these_chars, substr($k, $ki,1))+ strpos($encrypt_these_chars, substr($t, $ti,1)) % $modulo +&quot; &quot;;&lt;br /&gt;&amp;nbsp; $c = strpos($encrypt_these_chars, substr($t, $ti,1));&lt;br /&gt;&amp;nbsp; $d;&lt;br /&gt;&amp;nbsp; $e;&lt;br /&gt;&amp;nbsp; if ($c &amp;gt;= 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; $c = ($c + strpos($encrypt_these_chars, substr($k, $ki,1))) % $modulo;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $d = substr($encrypt_these_chars, $c,1);&lt;br /&gt;&amp;nbsp;&amp;nbsp; $e .= $d;&lt;br /&gt;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; $e += $t.substr($ti,1);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;$key2 = $result2;&lt;br /&gt;&amp;nbsp;$debug = &quot;Key&amp;nbsp; : &quot;+$k+&quot;\n&quot;+&quot;Input: &quot;+$t+&quot;\n&quot;+&quot;Key&amp;nbsp; : &quot;+$dbg_key+&quot;\n&quot;+&quot;Input: &quot;+$dbg_inp+&quot;\n&quot;+&quot;Enc&amp;nbsp; : &quot;+$dbg_sum;&lt;br /&gt;&amp;nbsp;return $e . &quot;&quot;;&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;인코딩은 $edata = encrypt($data,$key); 으로 데이터와 키값만 입력하면 된다.&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;php 디코딩&lt;/h3&gt;
&lt;blockquote class=&quot;q3&quot;&gt;&lt;p&gt;function decrypt($key2,$secret) {&lt;br /&gt;&amp;nbsp;$encrypt_these_chars = &quot;1234567890ABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrstuvwxyz.,/?!$@^*()_+-=:;~{}&quot;;&lt;br /&gt;&amp;nbsp;$input = $key2;&lt;br /&gt;&amp;nbsp;$output = &quot;&quot;;&lt;br /&gt;&amp;nbsp;$debug = &quot;&quot;;&lt;br /&gt;&amp;nbsp;$k = $secret;&lt;br /&gt;&amp;nbsp;$t = $input;&lt;br /&gt;&amp;nbsp;$result;&lt;br /&gt;&amp;nbsp;$ki;&lt;br /&gt;&amp;nbsp;$ti;&lt;br /&gt;&amp;nbsp;$keylength = strlen($k);&lt;br /&gt;&amp;nbsp;$textlength = strlen($t);&lt;br /&gt;&amp;nbsp;$modulo = strlen($encrypt_these_chars);&lt;br /&gt;&amp;nbsp;$dbg_key;&lt;br /&gt;&amp;nbsp;$dbg_inp;&lt;br /&gt;&amp;nbsp;$dbg_sum;&lt;br /&gt;&amp;nbsp;for ($result = &quot;&quot;, $ki = $ti = 0; $ti &amp;lt; $textlength; $ti++, $ki++) {&lt;br /&gt;&amp;nbsp; if ($ki &amp;gt;= $keylength){&lt;br /&gt;&amp;nbsp;&amp;nbsp; $ki = 0;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; $c = strpos($encrypt_these_chars, substr($t, $ti,1));&lt;br /&gt;&amp;nbsp; if ($c &amp;gt;= 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; $c = ($c - strpos($encrypt_these_chars , substr($k, $ki,1)) + $modulo) % $modulo;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $result .= substr($encrypt_these_chars , $c, 1);&lt;br /&gt;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; $result += substr($t, $ti,1);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;return $result;&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;마찬가지로 디코딩 과정은 $ddata = decrypt($data,$key); 이면 끝.&lt;br /&gt;이 함수 아니었으면 지금도 뻘짓하고 있었을지도..&lt;br /&gt;땡큐땡큐&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="php"/>
            <category term="암호화"/>
            <category term="복호화"/>
            <category term="자료실"/>
            <category term="XE"/>
            <category term="XpressEngine"/>
            <category term="제로보드"/>
            
   </entry>
   <entry>
      <title>php 현재 시각 출력하기</title>
      <id>http://elkha.kr/xe/4023</id>
      <published>2010-05-17T12:52:29+09:00</published>
      <updated>2010-05-19T02:46:42+09:00</updated>
      <link rel="alternate" type="text/html" href="http://elkha.kr/xe/4023"/>
      <link rel="replies" type="text/html" href="http://elkha.kr/xe/4023#comment"/>
      <author>
         <name>Elkha</name>
                  <uri>http://www.elkha.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://elkha.kr/xe/files/attach/images/3581/023/004/watch.jpg&quot; alt=&quot;watch.jpg&quot; style=&quot;&quot; /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;php 시간&lt;/h3&gt;
&lt;p&gt;자료실을 제작하면서 다양한 함수를 접할 기회가 있었다.
&lt;br /&gt;내가 적용한 것들의 일부를 예로 들자면, 파일을 다운로드받는 유저는 아이디, 브라우저 버전, 아이피 주소 등을 제출하게 된다.
&lt;br /&gt;이 때 다운로드 받은 시각도 기록하는데 php 에서 서버의 현재 시각을 DB로 넘긴다.
&lt;br /&gt;각 요소(년월일, 시간)를 표현하는 형태는 자릿수에 따라 나타내는 방법, 한자리 일 때 0을 붙여 자리수를 둘로 맞추는 방법으로 나타낼 수 있다.
&lt;/p&gt;

&lt;h3&gt;문법&lt;br /&gt;&lt;/h3&gt;
&lt;dl&gt;

&lt;dt&gt;연도 | Year&lt;/dt&gt;
&lt;dd&gt;date(&quot;Y&quot;) // 네자리 eg) 2010&lt;/dd&gt;
&lt;dd&gt;date(&quot;y&quot;) // 두자리 eg) 10&lt;/dd&gt;

&lt;dt&gt;월 | Month&lt;/dt&gt;
&lt;dd&gt;date(&quot;n&quot;) // 한자리 eg) 5&lt;/dd&gt;
&lt;dd&gt;date(&quot;m&quot;) // 두자리 eg) 05&lt;/dd&gt;

&lt;dt&gt;요일 | Week&lt;/dt&gt;
&lt;dd&gt;date(&quot;w&quot;) // 일(0) ~ 토(6)&lt;/dd&gt;

&lt;dt&gt;일 | Day&lt;/dt&gt;
&lt;dd&gt;date(&quot;j&quot;) // 한자리 eg) 7&lt;/dd&gt;
&lt;dd&gt;date(&quot;d&quot;) // 두자리 eg) 07&lt;/dd&gt;

&lt;dt&gt;시간 | Hour&lt;/dt&gt;
&lt;dd&gt;date(&quot;G&quot;) // 24시간 - 한자리 eg) 17 &lt;/dd&gt;
&lt;dd&gt;date(&quot;H&quot;) // 24시간 - 두자리 eg) 17&lt;/dd&gt;
&lt;dd&gt;date(&quot;g&quot;) // 12시간 - 한자리 eg) 5&lt;/dd&gt;
&lt;dd&gt;date(&quot;h&quot;) // 12시간 - 두자리 eg) 05 &lt;/dd&gt;

&lt;dt&gt;분 | Minute&lt;/dt&gt;
&lt;dd&gt;date(&quot;i&quot;) // 두자리&lt;/dd&gt;

&lt;dt&gt;초 | Second&lt;/dt&gt;
&lt;dd&gt;date(&quot;s&quot;) // 두자리&lt;/dd&gt;

&lt;/dl&gt;

&lt;h3&gt;사용 예&lt;/h3&gt;
&lt;p&gt;문자열을 어디까지 입력할 수 있는지 모르겠지만 &quot;-&quot;, &quot;:&quot;&amp;nbsp; 정도는 잘 인식해준다.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&amp;lt;? echo date(&quot;Y-m-d H:i&quot;); ?&amp;gt;&lt;br /&gt;&lt;/dt&gt;
&lt;dd&gt;2010-05-17 17:39&lt;/dd&gt;

&lt;dt&gt;&amp;lt;? echo date(&quot;a h:i&quot;); ?&amp;gt;&lt;br /&gt;&lt;/dt&gt;
&lt;dd&gt;pm 05:42&lt;/dd&gt;

&lt;/dl&gt;

&lt;h3&gt;기타..&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://mwultong.blogspot.com/2007/04/php-print-date-time.html&quot;&gt;PHP 예제] 현재 날짜 시간, 년월일 시분초 출력 함수; Print Date Time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://kwaknu.egloos.com/5071908&quot;&gt;php 현재 시간 가져오기&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</content>
                  <category term="php"/>
            <category term="현재시간"/>
            <category term="현재시각"/>
            <category term="보여주기"/>
            
   </entry>
   <entry>
      <title>html 파일에서 php 구문 숨기기</title>
      <id>http://elkha.kr/xe/3991</id>
      <published>2010-05-17T08:17:32+09:00</published>
      <updated>2010-05-19T02:50:26+09:00</updated>
      <link rel="alternate" type="text/html" href="http://elkha.kr/xe/3991"/>
      <link rel="replies" type="text/html" href="http://elkha.kr/xe/3991#comment"/>
      <author>
         <name>Elkha</name>
                  <uri>http://www.elkha.kr</uri>
               </author>
            <content type="html">&lt;div class=&quot;xe_content&quot;&gt;&lt;h3&gt;php 노출&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;http://elkha.kr/xe/files/attach/images/3581/991/003/html.png&quot; alt=&quot;html.png&quot; class=&quot;iePngFix&quot; style=&quot;width: 222px; height:138px; float: right;&quot; /&gt;
일반적으로 .html 파일을 열면 php 소스가 그대로 노출된다.&lt;br /&gt;보안에 문제가 있다는 뜻은 아니지만, 외부 방문자에게 소스가 노출되는건 썩 내키지 않는다.&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;웹 서버 설정&lt;/h3&gt;
&lt;h4&gt;Lighttpd&lt;/h4&gt;
&lt;p&gt;나는 Lighttpd 웹 서버를 사용하기 때문에 /etc/lighttpd/lighttpd.conf 파일을 수정했다.&lt;br /&gt;웹서버의 php 확장기능을 적용할 파일의 확장자를 추가하면 된다.&lt;/p&gt;&lt;blockquote class=&quot;q3&quot;&gt;&lt;p&gt;# &lt;span style=&quot;text-decoration: line-through;&quot;&gt;static-file.exclude-extensions = ( &quot;.php&quot;, &quot;.pl&quot;, &quot;.fcgi&quot; )&lt;/span&gt;&lt;br /&gt;static-file.exclude-extensions = ( &quot;.php&quot;, &quot;.pl&quot;, &quot;.fcgi&quot;, &quot;.html&quot; )&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;img src=&quot;http://elkha.kr/xe/files/attach/images/3581/991/003/php.png&quot; alt=&quot;php.png&quot; class=&quot;iePngFix&quot; style=&quot;float: right;&quot; /&gt;위와 같이 바꾸고 나서 php 소스가 있는 파일로 액세스를 시도해봤다.&lt;br /&gt;그랬더니 403 에러가&amp;nbsp; 뜨더라 -ㅅ-&lt;br /&gt;에러페이지를 의도한건 아니지만 원래 목적은 달성했으니 그걸로 만족한다.
&lt;br /&gt;&lt;/p&gt;

&lt;h4&gt;Apache&lt;/h4&gt;
&lt;p&gt;내가 구축한 Apache 서버는 어차피 html 파일에서도 php 구문이 적용되길래 별 소용이 없었다.&lt;br /&gt;만약 php 구문이 노출된다면 .htaccess 파일을 수정하면 된다.&lt;br /&gt;&lt;/p&gt;&lt;blockquote class=&quot;q3&quot;&gt;&lt;p&gt;AddType application/x-httpd-php .html&lt;br /&gt;AddHandler x-httpd-php .html&lt;br /&gt;&lt;/p&gt;
&lt;sup&gt;http://www.starhost.co.kr/xe/108879&lt;/sup&gt;
&lt;/blockquote&gt;&lt;p&gt;테스트해보니 페이지는 뜨지 않고 html 파일을 저장하겠냐고 나오더라.&lt;br /&gt;하여튼 상상을 뛰어넘는 오묘한 세계다 ㅡ,.ㅡ;&lt;br /&gt;덧: 루트 .htaccess 파일을 수정하는 것 보다, 접근을 원치않는 경로에 .htaccess 파일을 생성해서 작성하는게 적절할 것이다.&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;장점과 단점&lt;/h3&gt;
&lt;p&gt;소스를 숨기는 효과뿐만 아니라 어느 html 파일에서나 php 구문을 적용할 수 있다.&lt;br /&gt;글쎄.. 단점이 있는지 모르겠지만 본의 아니게 html 파일에서 쓸데없는 php 호출이 발생할지도?&lt;br /&gt;아무튼 php 구문은 가급적 .php 파일에서 처리하는게 좋다.&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;기타&lt;/h3&gt;
&lt;p&gt;당연한 얘기지만 XE 템플릿에서 사용하는 { } 문법은 그대로 노출되더라.&lt;br /&gt;곰곰히 생각해보니 웹서버의 rewrite 모듈을 사용해서 디렉토리를 우회하는 게 더 괜찮은 방법인듯?&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;</content>
                  <category term="php"/>
            <category term="lighttpd"/>
            <category term="apache"/>
            
   </entry>
</feed> 
