Php 设置$\u POST变量中的值以通过Codeigniter进行验证

Php 设置$\u POST变量中的值以通过Codeigniter进行验证,php,json,codeigniter,Php,Json,Codeigniter,我正在使用Codeigniter创建基于WebSocket的应用程序。因此,数据以JSON字符串的形式出现(而不是POST方法)。我想使用Codeigniter的内置form_验证方法来验证作为JSON接收的数据 这就是我到目前为止试图设置变量的地方,这样我就可以通过$this->input->post('variable_name')访问它 试试看#1 $_POST['variable_name'] = !isset($data['variable_name']) ? NULL : $data

我正在使用Codeigniter创建基于WebSocket的应用程序。因此,数据以JSON字符串的形式出现(而不是POST方法)。我想使用Codeigniter的内置form_验证方法来验证作为JSON接收的数据

这就是我到目前为止试图设置变量的地方,这样我就可以通过
$this->input->post('variable_name')
访问它

试试看#1

$_POST['variable_name'] = !isset($data['variable_name']) ? NULL : $data['variable_name'];
试试看#2

$variable_name = !isset($data['variable_name']) ? NULL : $data['variable_name'];
$this->form_validation->set_value("variable_name", $variable_name);
但是当我使用
$this->input->post('variable\u name')

它返回
NULL

有一种方法叫做
set_data()
,专门用于验证非POST输入


以下是我是如何做到这一点的。虽然,这似乎不是一个精确的解决方案,但它很简单,没有解决办法

在执行表单验证之前,我只添加了一行

$_SERVER["REQUEST_METHOD"] = "POST";
然后像这样设置变量

$_POST['post_var'] = "value";
现在设置验证规则并执行验证


就是这样:)

如果我记得最近,CI输入类从post中提取所有数据并将其缓存在内部变量中,因此当您使用$this->Input->post时,您将从该缓存中获取值。这意味着您需要更改输入类,或者在加载CI之前将数据设置为$\u POST数组。如果是这样,这是一种奇怪的行为。应该有一种手动设置值的方法:(不是真的,这是有意义的-从脚本启动的那一刻起,您的帖子数据不应该更改。那么,您有什么建议吗?是否有其他使用Codeigniter的验证方法?回答很好!谢谢。:)您得到了答案,这是我的荣幸:)这应该是选择的答案。