Home >Backend Development >PHP Tutorial >Problem that QR code cannot be generated correctly using phpqrcode
Receive the data sent by the client, add this data as a parameter to the URL, and then generate the QR code of this URL. The QR code can be generated, but the URL of the generated QR code does not have the parameters I want.
The code is as follows
<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>
It is roughly estimated that there is a problem when the parameters are passed, but I don’t know how to troubleshoot.
In addition, this can also generate the correct QR 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>
Receive the data sent by the client, add this data as a parameter to the URL, and then generate the QR code of this URL. The QR code can be generated, but the URL of the generated QR code does not have the parameters I want.
The code is as follows
<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>
It is roughly estimated that there is a problem when the parameters are passed, but I don’t know how to troubleshoot.
In addition, this can also generate the correct QR 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>
Answered it by myself. I only found the wrong place, but not the reason.
This problem is that the client uses JQuery’s $.ajax to pass parameters, causing phpqrcode to be unable to obtain (the server does obtain the data, phpqrcode is the first step of encoding, and the url is correct). If the client Just switch to form submission.
Jquery’s ajax operation does not require urldecode. In fact, urlencode is generally used, and the browser will automatically decode it.
Try to see if this is the reason why you cannot get the parameters.