Codeigniter - <textarea> </textarea> POST更改内容

时间:2015-07-01 13:15:27

标签: php codeigniter post

我在codeigniter中发布数据时遇到了一些问题。 我想为.php文件制作一个编辑器,当我想发布像这样的字符串时

<?php echo $my_var; ?><p>sample text</p>

获得的结果

$_POST['element_name']

<!--<?php echo $my_var; ?>--><p>sample text</p>

为什么会这样?我如何获得原文?

以下是我的代码的一部分

HTML

<form role="form" accept-charset="utf-8" method="post" action="">
    <textarea id="editor_original"><?php echo $editor_original;?></textarea>
    <textarea name="editor" id="editor"></textarea>
    <input type="submit" value="Save" />
</form>

JAVASCRIPT

    var editor = CodeMirror.fromTextArea(document.getElementById('editor_original'), {
        lineNumbers: true,
        extraKeys: {"Ctrl-Space": "autocomplete"},
        keyMap: "sublime",
        autoCloseBrackets: true,
        matchBrackets: true,
        mode: "application/x-httpd-php",
        showCursorWhenSelecting: true,
        theme: "monokai",
        onBlur: function () { 
             editor.save();             
        }

      });
   $("#editor").val(editor.getValue());

PHP

$data = $this->page_m->array_from_post(array('editor'));
echo $data; // here output is <!--<?php echo $my_var; ?>--><p>sample text</p>


public function array_from_post($fields)
{
    $data = array();
    foreach($fields as $field)
    {
        $data[$field] = $this->input->post($field);
    }
    return $data;
}

1 个答案:

答案 0 :(得分:1)

您获得了正确的数据,但由于回显,输出会被修改。 使用echo htmlentities($this->input->post('editor'));查看发布的内容。

如果您想保存内容,请使用以下内容:

write_file('out_file.php', stripslashes($this->input->post('editor')));

whre write_file

function write_file($path, $data, $mode = FOPEN_WRITE_CREATE_DESTRUCTIVE)
    {
        if ( ! $fp = @fopen($path, $mode))
        {
            return FALSE;
        }

        flock($fp, LOCK_EX);
        fwrite($fp, $data);
        flock($fp, LOCK_UN);
        fclose($fp);

        return TRUE;
    }

我希望这会对你有所帮助