CodeIgniter POST变种

时间:2011-10-22 22:06:55

标签: php codeigniter post

我遇到了CodeIgniter过滤掉含有重音字符的POST变量的问题。

这是我的HTML页面:

<!DOCTYPE html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head>
<body>    
    <form action="/test" method="post" accept-charset="utf-8">
        <input type="text" name="name" value=""  />
        <input type="submit" name="submit" value="Submit"  />    
<form>    
</body>
</html>

这是我的'/ test'CodeIgniter控制器的索引函数:

public function index {
    echo '<pre>';
    print_r($_POST);
    die();
}

...输入的名称是“我的名字”,我得到了这个:

Array
(
    [name] => my name
    [submit] => Submit
)

...但是输入的名称为'mynamé',变量将被传递为空:

Array
(
    [name] => 
    [submit] => Submit
)

如果我将相同的表单发布到独立的PHP脚本,它可以正常工作。我在配置中看不出任何明显的原因。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

在config.php中,更改此 -

/*
|--------------------------------------------------------------------------
| Default Character Set
|--------------------------------------------------------------------------
|
| This determines which character set is used by default in various methods
| that require a character set to be provided.
|
| See http://php.net/htmlspecialchars for a list of supported charsets.
|
*/
$config['charset'] = 'UTF-8';

到其他东西......基本上会发生什么,如果它被设置为UTF-8 CI默认情况下运行所有​​内容通过过滤器来检查/转换应用程序是否期望UTF-8,以及iconv()的实现是罪魁祸首...请参阅此主题以获取更多信息https://github.com/EllisLab/CodeIgniter/issues/261

答案 1 :(得分:-1)

这是一个特定于MAMP的问题,实际上是这个问题的重复,它提供了解决方案:$_POST empty on utf-8 characters