代码之家  ›  专栏  ›  技术社区  ›  Abs

编码问题?

  •  0
  • Abs  · 技术社区  · 15 年前

    我想我有一个网址编码问题。我需要使用Javascript打开一个窗口,并向其传递sqlselect查询。所以我做了这个:

    window.open('view_query.php?sql_query=' + query + '&db_name=' + db_name);
    

    这对我来说很有效,但我有一个问题打破了这一点:

    SELECT a FROM table WHERE field like '%adhoc%' 
    

    现在,当新窗口打开并且我打印从URL GET变量接收的查询时,它看起来是这样的:

    SELECT a FROM table WHERE field like '�hoc%' 
    

    %ad 已变成无法识别的字符!为什么?

    我已经尝试用URL编码来解决这个问题,但是因为我需要 %

    谢谢大家的帮助。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Guffa    15 年前

    % 字符用于使用字符代码对URL中的字符进行编码。顺序 %ad 表示十六进制字符代码为0xAD或十进制173的字符。

    使用encodeURIComponent函数转义URL的值:

    window.open('view_query.php?sql_query=' + encodeURIComponent(query) + '&db_name=' + encodeURIComponent(db_name));
    

    为了确保您(以及阅读本文的任何人)了解它,我还要指出通过浏览器发送SQL代码的风险。任何使用该系统的人都可以发送 作为查询,包括 删除表格 .

        2
  •  2
  •   Piotr Pankowski    15 年前

    使用 http://pl.php.net/urlencode http://pl.php.net/urldecode (如果需要,PHP应该自动为您执行此操作)

        3
  •  0
  •   cypher    15 年前


    window.open('view_query.php?sql_query='+encodeURICompoent(query)+'&db_name...) ;
    $query = rawurldecode($_GET['sql_query']);

    推荐文章