Home > Backend Development > PHP Tutorial > An article I saw on the Internet about js and php coding_PHP tutorial

An article I saw on the Internet about js and php coding_PHP tutorial

WBOY
Release: 2016-07-13 10:36:42
Original
729 people have browsed it


Solution: Use js to escape encode the Chinese characters in the URL.

<a href="" onclick="window.open('product_list.php?p_sort='+escape('PHP开发资源网'));">
Copy after login



The time after clicking the link is:

Quote: http://127.0.0.1/shop/ product_list.php?p_sort=PHP%u5F00%u53D1%u8D44%u6E90%u7F51


produces such an effect. It is obvious to use PHP's urldecode() or base64_decode() It cannot be reversed.

Solution, use PHP to write an inverse solution function:

function js_unescape($str)
<br />{
<br />        $ret = '';
<br />        $len = strlen($str);
<br />
<br />        for ($i = 0; $i < $len; $i++)
<br />        {
<br />                if ($str[$i] == '%' && $str[$i+1] == 'u')
<br />                {
<br />                        $val = hexdec(substr($str, $i+2, 4));
<br />
<br />                        if ($val < 0x7f) $ret .= chr($val);
<br />                        else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
<br />                        else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));
<br />
<br />                        $i += 5;
<br />                }
<br />                else if ($str[$i] == '%')
<br />                {
<br />                        $ret .= urldecode(substr($str, $i, 3));
<br />                        $i += 2;
<br />                }
<br />                else $ret .= $str[$i];
<br />        }
<br />        return $ret;
<br />}
Copy after login




Note that JS encoding will be automatically converted to UTF-8, so the encoding must be converted to get the correct result, otherwise the Chinese characters will be garbled.

The code is as follows:

print iconv('utf-8', 'gb2312', js_unescape($_REQUEST['p_sort']));
Copy after login



At this point we have successfully decoded the escape encoding of js.
is as follows:
Quote: PHP Development Resource Network


Also I found A function that uses PHP to implement escape encoding of js:

function phpescape($str)
<br />{
<br />         $sublen=strlen($str);
<br />         $retrunString="";
<br />         for ($i=0;$i<$sublen;$i++)
<br />         {
<br />                  if(ord($str[$i])>=127)
<br />                  {
<br />                           $tmpString=bin2hex(iconv("gb2312","ucs-2",substr($str,$i,2)));
<br />                           //$tmpString=substr($tmpString,2,2).substr($tmpString,0,2);window下可能要打开此项
<br />                           $retrunString.="%u".$tmpString;
<br />                           $i++;
<br />                  } else {
<br />                           $retrunString.="%".dechex(ord($str[$i]));
<br />                  }
<br />         }
<br />         return $retrunString;
<br />}
Copy after login



Have you ever encountered this problem?

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/738515.htmlTechArticleSolution: Use js to escape encode the Chinese characters in the URL. ahref=""onclick="window.open('product_list.php?p_sort='+escape('PHP Development Resource Network'));" The time after clicking the link is:...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template