我在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;
}
答案 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;
}
我希望这会对你有所帮助