php - 如何在控制器功能中使用表单输入来输入验证码以保护 CodeIgniter 中的表单提交(不是验证而是验证)
问题描述
这是我的控制器页面:
function saveNewForm()
{
//----------- verifying code-------------------------
$transactionCode = 0010; // any secret code
echo "
<input type='text' name='value'>
<input type='submit' name='submit'>
";
if($this->input->post('value') == $transactionCode){
//----------- posting data from view--------------------
$form = $this->input->post();
$data = $form;
$this->load->model('user_model');
$result = $this->user_model->saveNewTransaction($data);
redirect('transactions');
}
}
我知道我正在比较的 if 语句中有一些错误,$this->input->post('value')
它实际上不是来自 FORM,但它已经在控制器中。
$form 从也有 FORM 的视图页面获取数据。
如何使这项工作正常。
我想通过让他输入密码来提交表单来验证用户。
我曾尝试onsubmit
在表单中使用,但可以从浏览器的检查元素中删除此代码,不幸的是用户可以绕过它。
我这样做是出于安全目的,以便我可以最小化用户使用各种技术对数据进行更改。
解决方案
我不确定,但你可以试试这段代码
function saveNewForm()
{
$transactionCode = 0010; // any secret code
echo "
<form action='' method='post'>
<input type='text' name='value'>
<input type='submit' name='submit'>
</form>
";
if(!empty($this->input->post('value')){
if($this->input->post('value') <> $transactionCode){
exit();
}
}
$form = $this->input->post();
$data = $form;
$this->load->model('user_model');
$result = $this->user_model->saveNewTransaction($data);
redirect('transactions');
}
但是当你点击提交时,帖子数据只有“价值”
以及什么“$form = $this->input->post();” ?
推荐阅读
- android - Android Room belongsTo(一对一)关系
- c# - .NET Analyzer 规则集优先级
- app-store - 应用问题 - 如何阻止多个用户共享登录详细信息?
- python - 大 O 表示法中变量的值和变量大小之间的差异
- powershell - 带有ohmyposh主题的VScode remote-ssh Powershell终端看起来不正确
- jquery - 如何修复错误“endDate.getDay 不是函数”?
- pandas - 我试图为国家添加过滤器,但它给了我一个 eeror
- html - URL 中元素 ID 的滚动/跳转行为
- android - 从 Play 商店安装后,React 本机应用程序无法正常工作
- python - python-vlc:选择输入捕获设备