在base64链接编码

时间:2017-01-04 12:53:58

标签: javascript php wordpress encryption base64

我的wordpress网站上有一个base64系统来加密链接。所有的工作都像魅力,但我只想在目标空白处打开此链接。

此代码加密我的链接并在之后解密。

我不知道该怎么做。你有没有想过添加" target _blank?

在我的帖子中链接

<span class="lc" data="<?php echo cl(get_field(lien)); ?>" onclick="test()"> link </span></div>

我使用ACF插件生成链接

JS

function btob(text) {
   text = text.replace(/\s/g,""); if (!(/^[a-z0-9\+\/\s]+\={0,2}$/i.test(text)) || text.length % 4 > 0) { return text; }
   var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', cur, prev, digitNum, i=0, result = [], text = text.replace(/=/g, "");
   while (i < text.length){
       cur = digits.indexOf(text.charAt(i)); digitNum = i++ % 4;
       switch (digitNum) {
           case 1: result.push(String.fromCharCode(prev << 2 | cur >> 4)); break;
           case 2: result.push(String.fromCharCode((prev & 0x0f) << 4 | cur >> 2)); break;
           case 3: result.push(String.fromCharCode((prev & 3) << 6 | cur)); break;
       }
       prev = cur;
   }
   return result.join('');
}

function transformText() {
    var s = document.getElementsByTagName('span');
    for (i = 0; i < s.length; i++)
        if ((s[i].className.indexOf('lc') != -1)) {
            var lien = btob(s[i].getAttribute('data')).replace(/ajoutdunechainedecaractere/g,"");
            var lnk = document.createElement('a'); 
            lnk.href = lien; 
            lnk.innerHTML = s[i].innerHTML; 
            s[i].innerHTML = ''; 
            s[i].appendChild(lnk);

            if( s[i].hasAttribute("onclick") ) {
                //on récupère l'attribut onclick pour l'ajouter dans le lien
               lnk.setAttribute('onclick', s[i].getAttribute('onclick'));
            }
        }
    }
    window.onload=transformText;

功能php

// crypt
function cl($url) {
    $taille = strlen($url);
    $urlcode = "";

    for ($i = 0; $i < $taille; $i++) {
        if ($i % 2) {
            $urlcode.= "ajoutdunechainedecaractere" . $url{$i};
        } else {
            $urlcode.= $url{$i};
        }
    }
    return base64_encode($urlcode);
}

2 个答案:

答案 0 :(得分:1)

只需将target =“_ blank”添加到html元素。

...
lnk.href = lien; 
lnk.target = "_blank";
...

答案 1 :(得分:1)

你可以这样做:

lnk.target = "_blank";

但我不确定最终的网址是什么。在单独的窗口上处理URL可能更难。主要问题是test()<span>具有onclick属性时会添加{{1}}。