<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
    <channel>
        <title>PHP</title>
        <link>http://elkha.kr/xe/php</link>
        <description></description>
        <language>ko</language>
        <pubDate>Wed, 19 Jun 2013 07:51:58 +0900</pubDate>
        <lastBuildDate>Wed, 19 Jun 2013 07:51:58 +0900</lastBuildDate>
        <generator>XpressEngine</generator>
                                <item>
            <title>php __get($name), __set($name, $value)</title>
            <dc:creator>Elkha</dc:creator>
            <link>http://elkha.kr/xe/25299</link>
            <guid isPermaLink="true">http://elkha.kr/xe/25299</guid>
                        <comments>http://elkha.kr/xe/25299#comment</comments>
                                    <description>&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;</description>
                        <pubDate>Sat, 21 May 2011 15:23:53 +0900</pubDate>
                        <category>__get()</category>
                        <category>__set()</category>
                                </item>
                <item>
            <title>php 생성자 / 소멸자</title>
            <dc:creator>Elkha</dc:creator>
            <link>http://elkha.kr/xe/25291</link>
            <guid isPermaLink="true">http://elkha.kr/xe/25291</guid>
                        <comments>http://elkha.kr/xe/25291#comment</comments>
                                    <description>&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;</description>
                        <pubDate>Sat, 21 May 2011 14:58:28 +0900</pubDate>
                        <category>php</category>
                        <category>__constuctor</category>
                        <category>__destruct</category>
                                </item>
                <item>
            <title>php 에서 파일 권한 설정</title>
            <dc:creator>Elkha</dc:creator>
            <link>http://elkha.kr/xe/4312</link>
            <guid isPermaLink="true">http://elkha.kr/xe/4312</guid>
                        <comments>http://elkha.kr/xe/4312#comment</comments>
                                    <description>&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;</description>
                        <pubDate>Fri, 21 May 2010 14:47:01 +0900</pubDate>
                        <category>php</category>
                        <category>chmod</category>
                        <category>파일권한</category>
                                </item>
                <item>
            <title>php 쿠키 생성, 읽기</title>
            <dc:creator>Elkha</dc:creator>
            <link>http://elkha.kr/xe/4167</link>
            <guid isPermaLink="true">http://elkha.kr/xe/4167</guid>
                        <comments>http://elkha.kr/xe/4167#comment</comments>
                                    <description>&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;</description>
                        <pubDate>Wed, 19 May 2010 01:54:30 +0900</pubDate>
                        <category>php</category>
                        <category>쿠키</category>
                        <category>불러오기</category>
                        <category>생성</category>
                        <category>읽기</category>
                                </item>
                <item>
            <title>php 에서 텍스트 파일을 생성, 수정하기</title>
            <dc:creator>Elkha</dc:creator>
            <link>http://elkha.kr/xe/4123</link>
            <guid isPermaLink="true">http://elkha.kr/xe/4123</guid>
                        <comments>http://elkha.kr/xe/4123#comment</comments>
                                    <description>&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;</description>
                        <pubDate>Wed, 19 May 2010 00:50:56 +0900</pubDate>
                        <category>php</category>
                        <category>텍스트</category>
                        <category>파일</category>
                        <category>수정</category>
                        <category>fopen</category>
                        <category>fputs</category>
                        <category>fclose</category>
                                </item>
                <item>
            <title>php 암호화와 복호와</title>
            <dc:creator>Elkha</dc:creator>
            <link>http://elkha.kr/xe/4035</link>
            <guid isPermaLink="true">http://elkha.kr/xe/4035</guid>
                        <comments>http://elkha.kr/xe/4035#comment</comments>
                                    <description>&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;</description>
                        <pubDate>Mon, 17 May 2010 18:21:45 +0900</pubDate>
                        <category>php</category>
                        <category>암호화</category>
                        <category>복호화</category>
                        <category>자료실</category>
                        <category>XE</category>
                        <category>XpressEngine</category>
                        <category>제로보드</category>
                                </item>
                <item>
            <title>php 현재 시각 출력하기</title>
            <dc:creator>Elkha</dc:creator>
            <link>http://elkha.kr/xe/4023</link>
            <guid isPermaLink="true">http://elkha.kr/xe/4023</guid>
                        <comments>http://elkha.kr/xe/4023#comment</comments>
                                    <description>&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;</description>
                        <pubDate>Mon, 17 May 2010 12:52:29 +0900</pubDate>
                        <category>php</category>
                        <category>현재시간</category>
                        <category>현재시각</category>
                        <category>보여주기</category>
                                </item>
                <item>
            <title>html 파일에서 php 구문 숨기기</title>
            <dc:creator>Elkha</dc:creator>
            <link>http://elkha.kr/xe/3991</link>
            <guid isPermaLink="true">http://elkha.kr/xe/3991</guid>
                        <comments>http://elkha.kr/xe/3991#comment</comments>
                                    <description>&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;</description>
                        <pubDate>Mon, 17 May 2010 08:17:32 +0900</pubDate>
                        <category>php</category>
                        <category>lighttpd</category>
                        <category>apache</category>
                                </item>
            </channel>
</rss>
