2012-10-04 4 views
0

다음과 같은 방법으로 링크 URL을 숨기려고합니다. 배열에 URL을 저장 한 다음 $ _GET 배열의 매개 변수를 감지하면 저장된 URL로 리디렉션합니다.WordPress Plugin의 URL Cloaking

<? 
/* Plugin Name: Sample Link Cloak */ 

add_action('admin_menu', 'sample_link_cloak'); 
function sample_link_cloak() { 
    add_options_page(
     'Sample Link Cloak', 
     'Sample Link Cloak', 
     'manage_options', 
     'sample_link_cloak', 
     'sample_link_cloak_admin'); 
} 
function sample_link_cloak_admin() { 
    ?> 
    <div class="wrap"> 
    <?php 
     $links = '<p><a href="http://www.google.com">google.com</a></p>' . PHP_EOL 
       . '<p><a href="http://www.wordpress.org">wordpress.org</a></p>' . PHP_EOL 
       . '<p><a href="http://www.stackoverflow.com">stackoverflow.com</a></p>' . PHP_EOL; 

     $doc = new DOMDocument(); 
     @$doc->loadHTML($links);  
     $array_urls = array(); 
     foreach ($doc->getElementsByTagName('a') as $node) { 
      $url = $node->getAttribute('href'); 
      $hash = md5($url); 
      $array_urls[$hash] = $url; 
      $url = site_url('?urlcloak=' . $hash); 
      $node->setAttribute('href', $url); 
     }  
     echo $doc->saveXML(); 
     update_option('sample_urlcloak', $array_urls); 
    ?> 
    </div> 
    <?php 
} 
add_action('init', 'cloakurls'); 
function cloakurls() { 
    if (isset($_GET['urlcloak'])) { 
     $array_urls = get_option('sample_urlcloak'); 
     wp_redirect($array_urls[$_GET['urlcloak']]); 
     exit;  
    } 
} 

이 방법으로 예상 할 수있는 문제가 있습니다. 링크 수가 날마다 증가하므로 저장된 데이터는 어느 정도 도달하면 삭제해야합니다. 그러나 방문자가 웹 페이지를 로컬 드라이브에 저장하고 나중에 내용을 읽은 다음 링크를 클릭하면 서버가 URL을 저장하지 않으면이 시점에서 리디렉션되지 않습니다.

나는 여기에 설명 된 것과 거의 같은 문제라고 생각합니다. Looking for more efficient way to serve numerous link redirects?하지만 분산 플러그인의 경우 .htaccess 파일을 편집하는 것이 현실적입니까/실용적입니까? 모든 사용자가 .htaccess를 수정할 수있는 올바른 액세스 권한을 갖고있는 것은 아닙니다. 나는 잘 모르겠다.

누군가 올바른 방향으로 나를 안내 할 수 있는지 궁금합니다.

답변

1

응용 프로그램에 따라 다릅니다. 일반적으로 다른 SO 게시물이 설명하는 것을 수행 할 수 있지만 실제로 무작위 인 경우; 또는 리디렉션 된 사이트를 제어 할 권한이 없으면 데이터베이스를 사용하십시오. 기능은 하드 드라이브에서 찾고있는 것을 빨리 찾는 것입니다.

현재 귀하의 현재 접근 방식보다 조금 더 궁금해 지겠습니까? 양방향 난독 화는 어떻습니까? 단지 난독 화 (보안이 아님) 인 경우 URL을 암호화하고 해독 할 수있는 알고리즘을 사용하십시오. 그렇게하면 데이터를 저장할 필요가 없습니다.

+0

아, 아주 영리합니다. 첫눈에 당신이 의미하는 바를 얻지 못했지만 이제는 얻었습니다. 귀하의 통찰력에 감사드립니다. – Teno

+0

Nice, [Cloaking Plugin] (http://www.profitwp.net/profit-redirect/)에서 사용 된 것과 동일한 방법입니다. – jcarlosweb