consatan 发表于 2010-6-13 20:43:51

BUG? POST提交错误

CI版本1.7.2 Apache/2.2.14 (Win32) PHP/5.3.1
如下代码,用CI框架的情况下
VIEW
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
    <form action="test.php" method="POST">
      <input type="text" id="desc" name="desc" value="" />
      <input type="submit" value="提交">
    </form>
</body>
</html>

CONTROLLER
<?php
echo "<pre>";
print_r($_POST);
echo "<pre>";
?>

如果我输入的是“%AC”
则最后输出的是
Array
(
    =>
)

如果是不使用CI框架的话,则输出为
Array
(
    => %AC
)

测试了下发现只要是“%XC”,都显示为空,但是要插入到数据库时则变为\xXCr(插入错误,提示非法字符)

consatan 发表于 2010-6-13 20:57:04

%AE   %10 等也会变成无法显示(INPUT.phplib文件中列出的特殊字符),但插入数据库时提示错误...那如果真的提交的的数据包含这些文字怎么办??
我现在是叫他们先在%号后面加个空格,但是这不是办法啊...难道要在提交之前用JS处理这些字符??

Hex 发表于 2010-6-14 00:02:16

CI 有过滤机制。
提示什么错误?

consatan 发表于 2010-6-14 12:44:12

CI 有过滤机制。
提示什么错误?
Hex 发表于 2010-6-14 00:02 http://codeigniter.org.cn/forums/images/common/back.gif
CI什么提示也没有,就只是把这些字符串变成空白(至少IE上显示的是空白)
但是插入数据库的时候,%ACR 就变成了 \xACr

A Database Error Occurred
Error Number: 1366
Incorrect string value: '\xACr' for column 'style' at row 1

Hex 发表于 2010-6-14 14:30:04

我试了一下,确实被 CI 过滤了。。。。

consatan 发表于 2010-6-15 14:50:26

我试了一下,确实被 CI 过滤了。。。。
Hex 发表于 2010-6-14 14:30 http://codeigniter.org.cn/forums/images/common/back.gif
那现在怎么办??
修改那个INPUT.php的话又不知道会不会导致其他地方出错...难道真的要在前台用JS将那些特殊字符串的%后面加个空格?

Hex 发表于 2010-6-15 14:52:28

当然是要扩展 input.php 了,不是修改,是扩展。。。。
没其他方法了。

consatan 发表于 2010-6-17 15:56:45

当然是要扩展 input.php 了,不是修改,是扩展。。。。
没其他方法了。
Hex 发表于 2010-6-15 14:52 http://codeigniter.org.cn/forums/images/common/back.gif
还没试着拓展过CI...
能否提供下思路??

Hex 发表于 2010-6-17 16:58:13

参考 http://codeigniter.org.cn/user_guide/general/core_classes.html
或者代码区的例子。
页: [1]
查看完整版本: BUG? POST提交错误