codeigniter post html文本区域


codeigniter post html textarea

当我尝试从文本区域发布html时,变量值为空,form_validation显示错误消息,要求输入。。。。。。

我在寻找解决方案,但没有找到。。。。

这是我的代码

<form accept-charset="utf-8" method="post" action="<?php echo base_url('send_message/validate'); ?>">
                    <?php
                    echo validation_errors();
                    echo form_dropdown('cat_name', $plan_cat);
                    ?>
                    <div>
                            <span><label>اسم الراسل باللغه الانجليزية</label></span>
                            <span><input name="from" type="text" class="textbox" value="<?php echo set_value('from'); ?>" /></span>
                        </div>
                    <div>
                            <span><label>العنوان</label></span>
                            <span><input name="subject" type="text" class="textbox" value="<?php echo set_value('subject'); ?>" /></span>
                        </div>
                        <div>
                            <span><label>الرساله</label></span>

                            <?php
                                /*
                                $options = array(
                                'name' => 'message',
                                'id' => 'elm1'
                                );
                                echo form_textarea($options);
                            */
                            ?>
                            <textarea name="message" id="elm1"><?php echo set_value('message'); ?></textarea>
                        </div>
                    <div>
                            <span><input type="submit" value="ارسل" /></span>
                      </div>

                    <?php
                echo form_close();

                ?>

这是我的控制器代码:

$this->load->library('form_validation');
        $this->form_validation->set_rules('from', 'الراسل', 'required|min_length[8]');
        $this->form_validation->set_rules('subject', 'عنوان الرساله', 'required|min_length[6]');
        $this->form_validation->set_rules('message', 'الرساله', 'trim|required|min_length[10]|xss_clean');

        if($this->form_validation->run() == false){

            $user_id = $this->session->userdata('user_id');
            $send = array(
            'title' => 'ارسل الرساله',
            'plan' => $this->user_plan->get_plan($user_id)
            );
            $this->load->library('parser');
            $this->parser->parse('header', $send);
            $this->parser->parse('send_message', $send);
            $this->parser->parse('footer', $send);

        }else{
            $user_id = $this->session->userdata('user_id');
            $plan_cat = $this->input->post('cat_name');
            $from = $this->input->post('from', true);
            $subject = $this->input->post('subject', true);
            $message = $this->input->post('message', true);
            $message = '<code>'.$message.'</code>';

我希望找到解决这个问题的方法:)

首先,在深入研究代码之前,我必须指出:使用base_url功能作为操作属性是不好的。你必须以这种方式使用site_url:

echo site_url('send_message/validate');

背后的原因是:

  • site_url提供完整的url,包括主处理文件(index.php),该文件对处理MVC请求很重要(例如http://domain.com/codeigniter/index.php/send_message/validate)

  • base_ur为您提供URL而不考虑主文件(index.php)(例如http://domain.com/codeigniter/send_message/validate)

第二(也是重要的)。我看到您正在对(消息)使用XSS筛选器,这意味着您正试图将非法内容放入文本区域。试着放其他东西,一切都会好起来的。

因此,请确保您的消息值不包含非法字符。