2017-09-21 62 views
0

我使用的是Codeigniter 3,并且由于MY_Controller,我在使用表单提交时使用重定向时遇到了问题。基本上我有一个日期和文本的搜索表单,我使用基于表单输入的URI段在MY_Controller中重定向。即在从我的基地网站URL提交表单时,我会处理输入并重定向到mywebsite/search /从日期/日期/文本/搜索文本。由于逻辑位于MY_Controller中,所以数据正在被处理多次并且丢失。CodeIgniter通过jQuery提交重定向表单提交

我切换到使用jQuery构建重定向字符串,并执行重定向,它工作正常。我只是检查一下,看看这是否会产生任何安全影响,或者如果有人看到这种方法的任何问题?

这就是所谓的形式

jQuery脚本提交

<script type="text/javascript"> 
    $("#do_search").click(function(e) { 
    e.preventDefault(); 
    var from_date = $(this).closest("form").find("input[name='from_date']").val(); 
    var to_date = $(this).closest("form").find("input[name='to_date']").val(); 
    var search_text = $(this).closest("form").find("input[name='search_text']").val(); 
    var first = window.location.pathname; 
    first.indexOf(1); 
    first.toLowerCase(); 
    first = first.split("/")[1]; 

    var redir_url = window.location.protocol + '//' + window.location.host + '/' + first + '/search/' + from_date + '/' + to_date; 

    if(search_text !== ''){ 
     redir_url = redir_url + '/text/' + search_text; 
    } 
    $('#search').attr('action', redir_url).submit(); 
    return false; 
    }); 
</script> 

产生的URL在MY_Controller处理,会话变量保持和URL正确解析。我正在使用CSRF和活跃的记录,所以我相信这是一种安全的方法,但希望与您的专家核对。

回答

0

您只是从表单输入中获取日期信息并从中构建一个URL。这种方法没有什么不安全感。

0

我认为没有安全问题,如果用户在search_text输入中写入特殊字符,就会出现问题。你应该在提交之前进行预验证

+0

Daniel,我不是很精通JS,我一旦提交数据就验证PHP/Codeigniter中的输入。你是说我应该检查JQuery中的输入吗? – ReeseB