首页 > 解决方案 > 如何在控制器功能中使用表单输入来输入验证码以保护 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在表单中使用,但可以从浏览器的检查元素中删除此代码,不幸的是用户可以绕过它。

我这样做是出于安全目的,以便我可以最小化用户使用各种技术对数据进行更改。

标签: phpcodeigniter

解决方案


我不确定,但你可以试试这段代码

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();” ?


推荐阅读