2011-02-28 19 views
4

为了以下目的,我必须使用哪些函数来编码/解码/转义/ stripslash数据?运行由PHP与先前从JS接收到的数据,以防止MySQL的一个MySQL查询时don%27t_use_%23_and_%25_in_URL_params 逃避数据的最佳方式JS-> PHP-> MySQL,反之亦然

  • page.php?data=don't_use_#_and_%_in_URL_params
  • 当PHP脚本接收的参数从JS一样:

      从JS像调用PHP脚本时
    1. (可以说我需要在数据库中插入以下字符序列:"``'
    2. 当我需要在MySQL语句中比较包含"``'序列的字段值时
    3. 当我需要从MySQL表中检索字段值并且该字段包含"``'并且我想在PHP eval()宏中使用它时
    4. 当我必须在AJAX响应中将数据从PHP发送到JS并且它包含"``'字符
    5. 最后我要的eval()以前在回应JS

    是这样的图:

    JS(编码) - >(解码)PHP(编码) - > (解码?)MySQL(编码?) - >(解码)MySQL(编码) - >(解码)JS

    如果有人来回答,或者纠正我,如果我在这里犯任何错误的时间和乐趣,感谢在数据库中预先

  • 回答

    2
    1. encodeURIComponent
    2. $_GET
    3. PDO bound parameters
    4. PDO bound parameters。否则它只是PHP中的一个字符串
    5. 不知道。你真的应该为每个问题提出一个问题。 eval虽然味道不好。
    6. 选择一种数据格式并使用适当的编码。 JSON是常见的。
    7. 唯一一次你应该去eval()附近是JS当你在没有本地版本的浏览器中实现对json的支持时(你可以使用Crockford的json2.js)。所以不要。
    +0

    2。$ _GET永远不会将我的JS编码字符串“don%27t_use_%23_and_%25_in_URL_params”转换为“don't_use _#_和_%_ in_URL_params”我期望在$ _GET [“data”中得到) – SYNCRo 2011-02-28 10:07:35

    +0

    @Iulian你确定吗? – 2011-02-28 11:10:26

    +0

    是的。 PHP在填充'$ _GET'时为URL编码数据做正确的事情。 – Quentin 2011-02-28 11:50:57

    1
    1. 越狱()
    2. 不需要任何操作。 3-4。数据源在这里并不重要。有建立查询的常用规则,我相信你已经知道这一切。如果不是 - 请参阅this complete explanation
    3. 从来没有做到这一点。这是您应用程序中摩天大楼的一个洞。你没看到吗?
    4. json_encode()
    5. eval?你确定?为什么不发送数据只有所有的代码已经存在于JS?
    相关问题