1.背景

在多页面传值时,不想让别人看到具体的值。可转成其他字符,再逆转一遍。

2.方案

2.1转成十六进制

简单混淆,还可缩短字符串,但缺点是可能被识破,具体方法

2.2转为ASCII

缺点是字符串长度会变长,具体方法

2.3系统自带的函数

urlencode(string)函数实现将字符串string进行URL编码。urldecode(string)解码。具体用法如下:

$url=urlencode('action=insert|id=3|name=Jack');

echo 'index.php?request='.$url;

echo '---'; echo urldecode('action%3Dinsert%7Cid%3D3%7Cname%3DJack');

此法的缺点也会被识破,也可在此法基础上进一步加密,或直接用POST方法。

2.4(推荐)btoa函数

var encodeData = window.btoa("name=yangmi&age=3")//编码

var decodeData = window.atob(encodeData)//解码

举例:

需工跳转的页面:url="t.html?name=yangmi&age=3"

步骤1转码:url="t.html?"+window.btoa("name=yangmi&age=3")

步骤2跳转:window.open(url)或者window.locaton.href=url

步骤3解码:在接收页面中:

步骤3.1:通过var paramsString=window.location.search来获取url中?号开始的内容(url的查询部分)即"?name=yangmi&age=3"

步骤3.2:去掉?号paramsString=paramsString.substring(1) //即:"name=yangmi&age=3"

步骤3.2:去掉&paramsString=paramsString.split("&")//即:["name=yangmi","age=3"]

备注:

window.btoa这中编码方式不能直接作用于Unicode字符串,只能将ascci字符串或二进制数据转换成Base64编码过的字符串。如果要对Unicode字符进行编码将做如下转换。

var encodeData=window.btoa(window.encodeURIComponent("name=杨幂&age=3"))//编码

var decodeData=window.decodeURIComponent(window.atob(encodeData))//解码