맛집 여행 캠핑 일상 생활

PHP 단축 URL 사용하기 본문

LAMP

PHP 단축 URL 사용하기

영은파더♥ 2016. 2. 3. 16:03

GET 파라메터가 포함된 URL 을 남들이 알지 못하게 하고 싶을때나 URL 길이가 긴것을 조금이라도 줄여보고자 할 때 사용해보자.


function encrypt($str, $key) {

        $crypt_chars = "1234567890ABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrstuvwxyz.,/?!$@^&*()_+-=:;~{}";

        $t = $str;

        $result2;

        $ki;

        $ti;

        $keylength = strlen($key);

        $textlength = strlen($t);

        $modulo = strlen($crypt_chars);

        $dbg_key;

        $dbg_inp;

        $dbg_sum;

        $c = "";

        $d = "";

        $e = "";

        for ($result2 = "", $ki = $ti = 0; $ti < $textlength; $ti++, $ki++) {

                if ($ki >= $keylength) {

                        $ki = 0;

                }

                $dbg_inp += "["+$ti+"]="+strpos($crypt_chars, substr($t, $ti,1))+" ";

                $dbg_key += "["+$ki+"]="+strpos($crypt_chars, substr($key, $ki,1))+" ";

                $dbg_sum += "["+$ti+"]="+strpos($crypt_chars, substr($key, $ki,1))+ strpos($crypt_chars, substr($t, $ti,1)) % $modulo +" ";

                $c = strpos($crypt_chars, substr($t, $ti,1));

                if ($c >= 0) {

                        $c = ($c + strpos($crypt_chars, substr($key, $ki,1))) % $modulo;

                        $d = substr($crypt_chars, $c,1);

                        $e .= $d;

                } else {

                        $e += $t.substr($ti,1);

                }

        }

        $key2 = $result2;

        return urlencode($e);

}


function decrypt($str,$key) {

        $str = urldecode($str);

        $crypt_chars = "1234567890ABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrstuvwxyz.,/?!$@^&*()_+-=:;~{}";

        $input = $str;

        $output = "";

        $k = $key;

        $t = $input;

        $result;

        $ki;

        $ti;

        $keylength = strlen($k);

        $textlength = strlen($t);

        $modulo = strlen($crypt_chars);

        $dbg_key;

        $dbg_inp;

        $dbg_sum;

        for ($result = "", $ki = $ti = 0; $ti < $textlength; $ti++, $ki++) {

                if ($ki >= $keylength){

                        $ki = 0;

                }

                $c = strpos($crypt_chars, substr($t, $ti,1));

                if ($c >= 0) {

                        $c = ($c - strpos($crypt_chars , substr($k, $ki,1)) + $modulo) % $modulo;

                        $result .= substr($crypt_chars , $c, 1);

                } else {

                        $result += substr($t, $ti,1);

                }

        }

        return $result;

}


encrypt 는 url을 단축해주는 decrypt는 풀어주는 함수이다.

예제)

$key = "test key"; // 암호화할 때 필요한 키값이다.

$url = "test.php?param1=1234&param2=abcd";

$encrypt_url = encrypt($url, $key);

$decrypt_url = decrypt($encrypt_url, $key);

어떻게 응용하느냐에 따라 GET 파라메터만 숨길수도 있고, 사이트 루트에 decrypt 해주는 php 파일을 두고 location을 분기시킬 수도 있다.



'LAMP' 카테고리의 다른 글

하나의 서버에 아파치 두개 서비스 하기  (0) 2016.02.05
PHP FTP 업로드 함수  (0) 2016.02.03
MySQL 런타임 상태 보기  (0) 2016.02.02
지정한 계정만 su 명령어 허용하기  (0) 2016.01.29
MySQL 기본 함수 만들기  (0) 2016.01.28
Trackback : | Comments :