缺少小于(<)且大于(>)特殊字符的HTML POST

时间:2019-07-18 06:05:12

标签: php html mysql ckeditor

2019.07.19更新:

使用

解决的问题
$_REQUEST['editor1']

而不是$ _POST ['editor1']。 不确定原因。希望对遇到这个奇怪问题的人有所帮助。

=========================================

问题描述:

我正在将CKeditor集成到我的HTML表单中。 Ckeditor成功显示在表单上,​​并且我能够输入一些数据。但是,当我尝试发布表单以存储在数据库中时,我注意到数据库条目缺少所有HTML左括号和右括号。试图在互联网上搜索,但没有运气。请指教。

我的数据库字段具有文本类型。

我已经用TinyMCE替换了Ckeditor,但还是一样。

<div class="form-group">
    <label for="content"><?=$str['content']?></label>
        <div class="input-group mb-3">
        <textarea class="ckeditor" cols="80" id="editor1" name="editor1" rows="20"></textarea>
    </div>
</div>



<!-- Initializing the editor -->
<script src="//cdn.ckeditor.com/4.12.1/full/ckeditor.js"></script>
<script type="text/javascript">
    CKEDITOR.replace( 'editor1' );
</script>

我尝试使用以下数据输入ckeditor文本区域:

<h3><a href="https://stackoverflow.com/questions/22904776/insert-ckeditor-html-code-into-the-database">Insert ckeditor html code into the database - Stack Overflow</a></h3>
<p>&nbsp;</p>
<p><a href="https://stackoverflow.com/questions/22904776/insert-ckeditor-html-code-into-the-database"><cite>https://stackoverflow.com/questions/.../insert-ckeditor-html-code-into-the-database</cite></a></p>

但是当我存储在数据库中或检索$ _POST ['editor1']数据时,我得到的是:

h3a href=https://stackoverflow.com/questions/22904776/insert-ckeditor-html-code-into-the-databaseInsert ckeditor html code into the database - Stack Overflow/a/h3 p /p pa href=https://stackoverflow.com/questions/22904776/insert-ckeditor-html-code-into-the-databasecitehttps://stackoverflow.com/questions/.../insert-ckeditor-html-code-into-the-database/cite/a/p

所有左括号和右括号均缺失。 我做错了什么?

下面是存储数据的代码:

if (isset($_POST['submit'])) {
    $host     = DB_HOST; /* Host name */
    $user     = DB_USER; /* User */
    $password = DB_PASS; /* Password */
    $dbname   = DB_NAME; /* Database name */

    $con = mysqli_connect($host, $user, $password, $dbname);
// Check connection
    if (!$con) {
        die("Connection failed: " . mysqli_connect_error());
    }

    $subject      = $_POST['subject'];
    $content      = $_POST['editor1'];
    $publish      = $_POST['publish'];
    $publish_date = $_POST['publish_date'];
    $updated_by   = $_SESSION['memberID'];

    mysqli_query($con, " INSERT INTO tbl_announcement (subject, content, publish, publish_date, updated_by )
                VALUES ( '$subject', '$content', '$publish' , '$publish_date', '$updated_by')");

4 个答案:

答案 0 :(得分:0)

上次使用CKEditor时,我曾经收到过表单提交。然后浏览文档,它提供了一种从编辑器获取数据的方法,您可以通过AJAX保存该数据。

<script>
    var data = CKEDITOR.instances.editor1.getData();

    // Your code to save "data", usually through Ajax.
</script>

这可以解决您的问题。

答案 1 :(得分:0)

更好地使用 serialize 将CKeditor数据保存在数据库中。 serialize对于存储或传递PHP值而不丢失其类型和结构很有用。

喜欢。

$content = serialize($_POST['CKeditor_content']); //CKeditor_content will your text area field name attr.
在显示unserialize保存数据时

喜欢。

$content = unserialize($row["CKeditor_content"]); 

答案 2 :(得分:0)

使用html_entity_decode将HTML实体转换为HTML标签

echo html_entity_decode($_POST['editor1']);

参考链接here

答案 3 :(得分:-1)

使用以下命令进行检查: mysqli_real_escape_string(),同时添加数据库