簡體   English   中英

使用codeigniter表單驗證庫。 驗證不是來自帖子的數組

[英]Use codeigniter Form validation lib. to validate arrays not from post

可能是重復的。 但是我在Google上找不到任何東西,所以我們開始吧。

我有一個提交數據的表格。 這些數據需要進一步處理並將其拆分為變量。

我的表單帖子<input name='cmd' value='create -u username@demo.com -p password'/>

所以我收到這樣的帖子並將其拆分為

$username=username@demo.com
$password=password

現在我想驗證這些變量,因為form_validation lib。 已經在那里,為什么不使用它! 我知道我可以使用preg_match。 但是我認為我不需要重新發明已經存在的東西,

$this->form_validation->set_rules($username, 'username', 'required|xss_clean');
$this->form_validation->set_rules($password, 'username', 'required|xss_clean');

將是一個美麗的方法。

有沒有一種方法可以調整CI表單驗證以接受變量而不是field_name? 可能是一個輔助功能,對於此問題來說非常有用。 甚至可以使用$$ variable到id的變量名來進行match []驗證之類的規則。

非常感謝,我希望我能很好地解釋我的問題。

有兩種方法可以滿足您的需要,一種是定義輸入字段並在客戶端進行拆分,例如:

<form method="post">
  <input id="cmd" value="<?php if (set_value('username')) : ?>create -u <?=set_value('username')?> -p <?=set_value('password')?><?php endif; ?>"/>
  <input type="hidden" name="username" value="<?=set_value('username')?>" />
  <input type="hidden" name="password" value="<?=set_value('password')?>" />
</form>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"/>
<script type="text/javascript">
$(function () {
    $('#cmd').change(function () {
        var matches = $(this).val().match(/create -u ([^\b]+) -p ([^\b]+)\]/);
        $('input[name=username]').val(matches[1]);
        $('input[name=password]').val(matches[2]);
    });
});
</script>

或者您只需使用類似以下的回調進行驗證:

<form method="post">
  <input name="cmd" value="<?=set_value('cmd')?>"/>
</form>

$this->form_validation->set_rules('cmd', 'Command', 'required|callback_validate_cmd');

function validate_cmd($cmd)
{
    if ($cmd) {
        list($username, $password) = split_cmd($cmd);
        $this->load->helper('security');
        if ( ! xss_clean($username)) {
            $this->form_validation->set_message(__FUNCTION__, 'username_not_secure');
            return FALSE;
        } elseif ( ! xss_clean($password)) {
            $this->form_validation->set_message(__FUNCTION__, 'password_not_secure');ç
            return FALSE;
        }
    }
    return TRUE;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM