1.比如在app内需要嵌入一个h5的商城系统,app自己有会员系统,跳转到h5页面的时候需要把会员信息传入给h5,h5判断会员是否存在,不存在注册并登录,存在直接无感登录。
2.app端跳转到h5,首先app需要封装一个json里面是会员的唯一标识以及其他一些信息,然后把这个json通过aes加密,aes后的值在base64编码,base64后的值如下面的loginParams参数值,里面不会包含空格,但是会有+号。
http://域名?loginParams=+uzJvHcVFgqKAB9vnf5+y4JeXwVH6cInhOA8lZAruLU4J1Yrawt02n+YYXiOhhz+9h9KQa1sl5tydJE4KoiH3+Yd8XKEKAq8KZrITF4bJMtdKkjAcjQRi7cLXO4Uckz+MXSfeAamCThTAD2i40lbIvVhcaDEnCTt9ImhxBVIasCfp4txDZxcp3XH59hleN0b/cIIzM9gvZXtcIG2BdYWTolremqFER8wvruiUnFJqbUI46gHSUlmOXEKK8aPx+YUi4ILtOjOF27VRIN4Q8A4jg/Dj6oOY8iZUX7bu+aShv6Z9TlXaapJ7gODO8UwMhFta7w+Q7Anj3Uxhr/unNkT0MBdn1J0G5pvJi+USb8IKZqSUjYdrFKQRT3LvuzRgr/ujhhFd2tesZzBBVQhtJ04LqbAQHmxfEgAlLf/azoZT23GzvOLAk8LUE/nu+ziJiZQg0r7Yb0kZ/BRORWXrh4iqdozHE4h8aozeBHuIervJ6nHSPABeSaOzaD6MRmcYWMvhQDBEq/vPQp1OtZ7SvB3dCfRZQo9SIWJu2/SURXtPnEMY30rB+rwmS6Ddt1sj1bvrxgVRhOucrhb0GnpbvGQ97NkokwJLU3+r6VIbiZzUwHVO7F2p3fHhJc4ZGaAXPSkLrH9G5K76EsF7E7ZprMdbHf1i6MVZMbkkuVqCihDVyWIkhXgp+BT5ZwO+lj/VqLyoxvBJVNLxV7BljClqWNAXGxeEwZbmlLPnmKk9hKqQk0Vl/yFjaXZr3aV5DCpp8Xt
3.h5接受到loginparams参数值,然后aes解密,解密后在进行base64解码得到原始json,然后做业务逻辑处理。
4.但是这里会遇到一个问题,h5在接受到loginparams参数值后发现里面的+不见了,变成了空格,以为base64编码后的字符串不会有空格,所有可以采用字符串替换方法,把所有的空格,替换成+就可以了
php代码实现:
$loginParams = str_replace(' ','+',$loginParams);
方案2:让app方把参数传递之前先url编码,这样+号会被编码,然后php接受到的loginParams值里面就会有+号了,当然了这个需要对方配合,如果配合不了只能采用方案1。
为什么参数值里面的+get接受不到呢?
你记住+特殊,get传输之前要url编码才行。