일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- KB국민카드
- proxmox
- Rocky
- 알뜰폰
- SKT
- 티스토리
- 가상서버호스팅
- centos
- 알리익스프레스
- Apache
- PHP-FPM
- OpenWrt
- 킹북이초월
- jQuery
- 라즈베리파이2
- 보르비스초월
- 윈도우10
- mysql
- 아파치
- 자바스크립트
- 리눅스
- 램가스초월
- KB증권
- 소비전력
- 스톤에이지
- 복현오거리
- 시놀로지
- ConoHa
- iptime
- php
- Today
- Total
맛집 여행 캠핑 일상 생활
PHP 단축 URL 사용하기 본문
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¶m2=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 |