微信平台中get传递跳转链接-get值为网址-出现not find file等问题解决方法。

首先,项目使用的是pathinfo模式的网址,比如:http://www.xxx.com/Index/ucenter/变量名/变量值网址,这时候直接把网址放到变量值里是不可行的,第一个想法是将它urlencode编码以后传递。

通过php代码 $_SERVER['REQUEST_URI'] 取到的地址为/index.php?con=index&act=ucenter

结果编码以后的地址变成了 %2findex.php%3fcon%3dindex%26act%3ducenter,拼接后的跳转地址为:http://www.xxx.com/Index/ucenter/变量名/%2findex.php%3fcon%3dindex%26act%3ducenter

当直接访问的时候,因为碰到了参数值中的.php,服务器认为你是在访问%2findex.php这个文件,却又找不到,因此报not find file错误。

解决方法:

//把地址中的“.php”自定义编码加密一下,要不然直接作为get参数碰到xxx.php就会报找不到文件的错误,从而不能正常传值
$statestr = str_replace(".php","ASCII16ASCII112ASCII104ASCII112",$state);

继续执行,当我在微信中登录完成,最后一步需要跳转时,将上一步替换掉的.php再替换回来,再执行urldecode解码,然后用作跳转,这时出现白屏,查看网址后,网址为:http://www.xxx.com/%2findex.php%3fcon%3dindex%26act%3ducenter 

看到这个网址我就很奇怪,我明明把传递过来的路径已经urldecode解码了,为什么还是URL编码状态呢?,怎么检查都是清晰的思路:传递前编码-》替换.php-》传递中-》传递后替换回.php-》传递后解码-》跳转。传递前后一一对应,貌似没什么不对。来回检查了一遍,怀疑是在传递过程中,微信对我传递的这个URL编码过的参数又进行了一次URL编码,也就是说,如果我想要得到最终的真实结果,需要解码两次。

综上所述我最终的解决思路是:

传递前编码-》替换.php-》传递中-》传递后替换回.php-》传递后解码-》传递后解码后再次解码-》跳转

注:替换.php是为了解决not find file错误,

       两次解码是为了解决跳转后网址错误白屏的问题。

转载于:https://my.oschina.net/u/2406185/blog/514809

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值