php替换ascii代码

时间:2015-02-24 08:25:24

标签: php mysql ascii

我遇到了php问题。 我必须发送一个带有ajax请求的POST表单的SQL查询。 此查询类似于:

SELECT * FROM table WHERE field LIKE '%512%'

问题是当我从php中的POST var收回此查询时,它显示:

SELECT * FROM table WHERE field LIKE 'Q2%'

它显然失败了......

我尝试改为utf-8它没有改变任何东西。

Javascript似乎发送了正确的文本,但php在阅读POST时更改了它。

我是否可以阻止php以ascii代码读取%51?

以防万一,该网站使用Code Igniter编写。

由于

3 个答案:

答案 0 :(得分:1)

  1. 不要将整个SQL查询从Javascript客户端发送到服务器。只是不要。这比SQL注入漏洞更糟糕,它只是对任何人查询执行查询的全权委托。
  2. HTTP请求中的数据通常使用percent encoding进行编码,并猜测:%51恰好代表此编码中的“Q”。在HTTP请求中发送数据时,您需要对数据进行正确编码,例如使用encodeURIComponent()。如果您要发送“%51”,则需要实际发送%2551。具体细节取决于您如何准确发送数据。
  3. 另请考虑阅读The Great Escapism (Or: What You Need To Know To Work With Text Within Text)

答案 1 :(得分:0)

虽然您可以使用%25512%,但我同意deceze。

使用%25将被解释为%符号

所以请使用%25Your number

答案 2 :(得分:0)

POST数据:URL编码用“%”后跟两个十六进制数字替换不安全的ASCII字符 第一:使用javascript函数编码数据。

var res = encodeURI("SELECT * FROM table WHERE field LIKE '%512%'");

然后使用ajax发送数据。

在PHP中,使用函数解码数据:

$data=urldecode(string $_POST['yourdata']);

有关详细信息,您可以浏览以下链接: