【问题标题】:Set value in $_POST variable to validate through Codeigniter在 $_POST 变量中设置值以通过 Codeigniter 进行验证
【发布时间】:2016-02-12 15:45:18
【问题描述】:

我正在使用 Codeigniter 创建基于 WebSocket 的应用程序。因此,数据以 JSON 字符串(不是 POST 方法)的形式出现。我想使用 Codeigniter 的内置 form_validation 方法来验证作为 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_name') 它返回NULL

【问题讨论】:

  • 如果我没记错的话,CI Input 类从帖子中提取所有数据并将其缓存在内部变量中,因此当您使用 $this->input->post 时,您将从该缓存中获取值.这意味着,您需要在 CI 加载之前更改 Input 类,或将数据设置为 $_POST 数组。
  • 如果是这样,这是一个奇怪的行为。应该有一种手动设置值的方法。 :(
  • 不是真的,这是有道理的 - 从脚本启动的那一刻起,您的 POST 数据不应该改变。
  • 那么,你有什么推荐的?
  • 还有其他使用 Codeigniter 的验证方式吗?

标签: php json codeigniter


【解决方案1】:

这是我实现它的方法。虽然,它似乎不是一个准确的解决方案,但它很简单并且没有解决方法。

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

$_SERVER["REQUEST_METHOD"] = "POST";

然后像这样设置变量

$_POST['post_var'] = "value";

现在设置验证规则并执行验证。

就是这样:)

【讨论】:

  • 很好的答案!谢谢。 :)
  • 你得到了答案,这是我的荣幸 :)
【解决方案2】:

有一个名为set_data() 的方法专门用于验证非 POST 输入。

http://www.codeigniter.com/userguide3/libraries/form_validation.html#validating-an-array-other-than-post

【讨论】:

  • 这应该是选择的答案。
猜你喜欢
  • 2020-06-24
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 2016-06-29
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
相关资源
最近更新 更多