【问题标题】:NicEdit with Codes带有代码的 NicEdit
【发布时间】:2025-12-14 21:10:01
【问题描述】:

我正在为我的一个项目使用 NicEdit WYSIWYG 编辑器。

http://nicedit.com

我遇到的问题是 NicEdit 想让我将任何代码(HTML、CSS、PHP 等)发布到 mysql 数据库。其他都保存在数据库中。我在 NicEdit 工具面板中也找不到任何“代码”按钮。

这是 HTML 代码

<form action="submit" enctype="multipart/form-data" method="post" >


    <textarea name="area1" id="area1" cols=120></textarea>

    <button type="submit" class="btns" id="btns">Submi</button>
</form>

PHP 代码

  $ptext = isset($_POST['area1'])?$_POST['area1']:""

  $mysqli->query("INSERT INTO tutorials(ptxt) VALUES ('$ptext'')") or die (mysqli_error());

有什么解决办法吗?提前致谢。

【问题讨论】:

    标签: php mysql mysqli wysiwyg nicedit


    【解决方案1】:

    您可以在Javascript中获取编辑器的内容并手动向服务器发送ajax请求,而不是通过提交按钮提交表单。

    var editorText = nicEditors.findEditor("area1").getContent();
    
    var data = {
        area1: editorText
    };
    
    $.ajax({
        type: "POST",
        url: "/API/tutorials",
        data: data,
        complete: function(responseRaw){
        }
    });
    

    【讨论】:

      【解决方案2】:

      这可能是因为 mysqli 试图转义字符。一个解决方案是创建您自己的验证规则并通过它传递文本。或者只是不转义字符串,但这是一个糟糕的主意。

      我很确定它就是这样,但我一直使用 PDO,所以我对 mysqli 不太熟悉。

      【讨论】:

        【解决方案3】:

        在查询字符串之前尝试转义。无论如何都需要进行额外的 MySQL 注入保护。

        $ptext = $mysqli->real_escape_string($ptext);
        

        在您的查询语法中还发现了一个由附加引号引起的错误。将 '$ptext'' 更改为 '$ptext' 代码应该可以正常工作。

        如果这不起作用,请阅读 [nicInstance].saveContent() 的使用。在提交之前让 JS scipt 在提交时执行它。这会将 textarea 与 nicEdit 字段中的实际内容同步。

        http://wiki.nicedit.com/w/page/521/Javascript%20API

        【讨论】: