Home  >  Article  >  Backend Development  >  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
WBOYOriginal
2016-07-13 10:36:42707browse


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

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



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 />}




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']));



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 />}



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:...
Statement:
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