PHP和表单数据验证

时间:2012-06-07 10:51:07

标签: php forms codeigniter

我是PHP-Codeignitor的初学者。所以我不知道这个问题对你们来说太浪费了。

但有没有简单的方法来验证表单数据?

Ex.I有一个表,它包含一个文本字段“username”,还有一个插入按钮,whern用户点击插入它将添加另一个文本字段。

那么我怎样才能获得php中的值?因为用户可以在那里添加任意数量的字段。

$ username = $ _POST(“username”); //在这种情况下它会检索什么?数组?

如何处理这样的情况呢。

谢谢。

2 个答案:

答案 0 :(得分:3)

如果在表单中设置数组,则会在$ _POST中获得一个数组。

表单字段:

<input type='text' name='username[]' />
<input type='text' name='username[]' />

PHP:

$users_array = $_POST['username'];

答案 1 :(得分:1)

如果您的用户要添加多个字段,则应该让他们使用HTML array input执行此操作。类似的东西:

<input name="my_array[]" />

以下是HTML数组输入的form_validation用法:

  1. 获取输入数组以确定有多少字段
  2. 为每个字段设置规则
  3. 够简单吗? :)这是我的演示代码:

    控制器:application/controllers/test.php

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    /**
    * Test Controller
    *
    * It's really just a test controller
    *
    */
    class Test extends CI_Controller {
    
        public function __construct()
        {
            parent::__construct();
        }
    
        public function index()
        {
            $data = array();
            if ($this->input->post('test_submit'))
            {
                $this->load->library('form_validation');
                $input_array = $this->input->post('test');
    
                for ($i = 0; $i < count($input_array); $i++)
                {
                    $this->form_validation->set_rules("test[$i]", 'Test Field '.($i + 1), 'trim|is_numeric|xss_clean');
                }
    
                if ($this->form_validation->run() === TRUE)
                {
                    $data['message'] = 'All input are number! Great!';
                }
            }
            $this->load->helper('form');
            $this->load->view('test', $data);
        }
    
    }
    
    /* End of file test.php */
    /* Location: ./application/controllers/test.php */
    

    查看:application/views/test.php

    <p><?php echo isset($message) ? $message : ''; ?></p>
    <?php echo validation_errors(); ?>
    <?php echo form_open(); ?>
        <?php echo form_label('Test fields (numeric)', 'test[]'); ?>
        <?php for ($i = 0; $i < 3; $i++): ?>
            <?php echo form_input('test[]', set_value("test[$i]")); ?>
        <?php endfor; ?>
        <?php echo form_submit('test_submit', 'Submit'); ?>
    <?php echo form_close(); ?>
    

    网址:<your_base_url_here>/index.php/test 看看:D

    注意 numericis_numeric规则都需要输入,这意味着空字符串不是数字。