接收客户端发来的数据,将此数据作为参数加到URL中,然后生成此URL的二维码。可以生成二维码,但是生成的二维码的URL却没有带上我要的参数。
代码如下
$param_str = urldecode($_POST['data']); $param_str = base64_encode($param_str); $url = "http://www.example/order_add.php?data=".$param_str; //url1是将参数直接写入URl中 //$url1 = "http://www.example/order_add.php?data=eyJ1aWQiOiIxMzU5MDE3NjY0N19oaiIsICJtb2JpbGVwaG9uZSI6IjEzNTkwMTc2NDY0IiwgImFyZWEiOiLljJfkuqzluILkuJzln47ljLrkuJzljY7pl6jooZfpgZMiLCAic2hvcExpc3QiOlt7InNob3BQcm9kdWN0ViI6MiwgImFkZGl0aW9uV29yZCI6IiIsICJwb3N0VHlwZSI6MSwgInByaWNlVG90YWwiOjAuMTIsICJwcm9kdWN0TGlzdCI6W3sicHJvZHVjdFZvbHVtZSI6MSwgImNvbWJvSWQiOjAsICJwcm9kdWN0SWQiOjM1fSwgeyJwcm9kdWN0Vm9sdW1lIjoxLCAiY29tYm9JZCI6MCwgInByb2R1Y3RJZCI6NzF9XSwgInNob3BJZCI6MjIsICJwb3N0UHJpY2UiOjAuMH1dLCAiYWRkcmVzcyI6IjY2NjY2NjY2NjY2NjYiLCAiZm9ybUNhcnQiOjEsICJ0ZWxlcGhvbmUiOiJudWxsIiwgImNvbm5lY3ROYW1lIjoiMzMzMzMzMzMzMzMzMzMzMzMzMzMifQ=="; //这个生成二维码链接中data参数为空 echo QRcode::png($url); //这样却可以生成正确的二维码 //echo QRcode::png($url1); //$url与$url1恒等比较过为1,两者编码相同都为ASCII
大致估计是参数传过来时有问题,但是不知道如何排查。
另外这样也可以生成正确的二维码
//手动赋值$param_str $param_str = "eyJ1aWQiOiIxMzU5MDE3NjY0N19oaiIsICJtb2JpbGVwaG9uZSI6IjEzNTkwMTc2NDY0IiwgImFyZWEiOiLljJfkuqzluILkuJzln47ljLrkuJzljY7pl6jooZfpgZMiLCAic2hvcExpc3QiOlt7InNob3BQcm9kdWN0ViI6MiwgImFkZGl0aW9uV29yZCI6IiIsICJwb3N0VHlwZSI6MSwgInByaWNlVG90YWwiOjAuMTIsICJwcm9kdWN0TGlzdCI6W3sicHJvZHVjdFZvbHVtZSI6MSwgImNvbWJvSWQiOjAsICJwcm9kdWN0SWQiOjM1fSwgeyJwcm9kdWN0Vm9sdW1lIjoxLCAiY29tYm9JZCI6MCwgInByb2R1Y3RJZCI6NzF9XSwgInNob3BJZCI6MjIsICJwb3N0UHJpY2UiOjAuMH1dLCAiYWRkcmVzcyI6IjY2NjY2NjY2NjY2NjYiLCAiZm9ybUNhcnQiOjEsICJ0ZWxlcGhvbmUiOiJudWxsIiwgImNvbm5lY3ROYW1lIjoiMzMzMzMzMzMzMzMzMzMzMzMzMzMifQ=="; $url = "http://www.example/order_add.php?data=".$param_str; echo QRcode::png($url); //增加路径 //增加路径的话会生成实体的图片文件,如果有多人同时访问,前者就会被覆盖。所以不适合实际用 QRcode::png($url,"order_qr.png");*/
自己解答,只找到了错误的地方,没找到为什么。
这个问题是客户端用JQuery的$.ajax传过来的参数,导致phpqrcode不能获取(服务器端是确实获取到了数据的,phpqrcode在编码的前一步,url都是正确的),客户端如果换成用form表单提交的形式就可以。
jquery的ajax操作不需要urldecode呀,其实一般用到的是urlencode,浏览器会自动decode的。
你试试看是不是这个原因导致的拿不到参数。