CodeIgniter CSRF保护如何通过jquery选项卡加载提交表单

时间:2013-07-10 22:52:14

标签: jquery-ui codeigniter codeigniter-2 csrf

我正在开发一些后端项目,并希望通过jQueryUI标签加载表单

<div id="parameters_tabs" style="width:920px;">
<ul>    
            <li><a href="<?=base_url()?>link1"><?=$this->lang->line('tab_name')?></a></li>                
</ul>   
</div>

作为回应,我生成了几个表格,如下例所示:

<?
                    for ($i = 0; $i < count($groups); $i++)
                    {
            ?>                                                      
                            <form id="group_form<?=$i?>" method="POST" action="<?=base_url()?>update_group">
                                <input type="hidden" name="<?=$this->config->item('csrf_token_name')?>" value="<?=$token?>" />
                                <input type="hidden" name="id" value="<?=$groups[$i]['id']?>" />                                                
                                <tr>                                                        
                                        <td>
                                            <input type="text" value="<?=$groups[$i]['name']?>" name="name" />                                                                
                                        </td>
                                        <td>
                                            <input type="text" value="<?=$groups[$i]['short_name']?>" name="short_name" />
                                        </td>
                                        <td>
                                            <textarea cols="80" rows="4" name="desc"><?=$mgroups[$i]['desc']?></textarea>                                                    
                                        </td>                                            
                                        <td style="width: 30px">
                                                <a class="save" onclick="$('#group_form<?=$i?>').submit();"><?=$this->lang->line('save')?></a>                                                    
                                        </td>
                                </tr>
                            </form>                                                                                    
                <?
                    }
                ?>

点击“保存”时,我收到了有关CSRF保护的标准错误:

“遇到错误

不允许您请求的操作。“

任何人都可以帮助我并告诉我哪里弄错了吗?当然在源代码中我看到了正确的csrf_token_name。

1 个答案:

答案 0 :(得分:0)

当我遇到同样的问题时,

This article帮助了我。使用内置的form helper form_open()函数也可能有助于解决问题(因为它会为您生成隐藏的CSRF字段)。