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:去掉¶msString=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))//解码