使用phpqrcode不能正确的生成二维码问题

WBOY
풀어 주다: 2016-07-06 13:52:58
원래의
2355명이 탐색했습니다.

接收客户端发来的数据,将此数据作为参数加到URL中,然后生成此URL的二维码。可以生成二维码,但是生成的二维码的URL却没有带上我要的参数。

代码如下

<code>$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</code>
로그인 후 복사
로그인 후 복사

大致估计是参数传过来时有问题,但是不知道如何排查。

另外这样也可以生成正确的二维码

<code>//手动赋值$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");*/
</code>
로그인 후 복사
로그인 후 복사

回复内容:

接收客户端发来的数据,将此数据作为参数加到URL中,然后生成此URL的二维码。可以生成二维码,但是生成的二维码的URL却没有带上我要的参数。

代码如下

<code>$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</code>
로그인 후 복사
로그인 후 복사

大致估计是参数传过来时有问题,但是不知道如何排查。

另外这样也可以生成正确的二维码

<code>//手动赋值$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");*/
</code>
로그인 후 복사
로그인 후 복사

自己解答,只找到了错误的地方,没找到为什么。
这个问题是客户端用JQuery的$.ajax传过来的参数,导致phpqrcode不能获取(服务器端是确实获取到了数据的,phpqrcode在编码的前一步,url都是正确的),客户端如果换成用form表单提交的形式就可以。

jquery的ajax操作不需要urldecode呀,其实一般用到的是urlencode,浏览器会自动decode的。
你试试看是不是这个原因导致的拿不到参数。

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!