gpt4 book ai didi

php - Silverstripe HTML 字段验证

转载 作者:搜寻专家 更新时间:2023-10-31 21:56:18 25 4
gpt4 key购买 nike

我想弄清楚如何让用户在我正在制作的网站的个人资料中填写他们的“关于”字段。最大的缺点是我希望允许用户能够像您在论坛上发帖时那样格式化他们的文本,或者像 Silverstripe 用户在您进入管理面板时那样格式化它们。

我尝试使用 silverstripe 中的 HTML 字段。当我添加框时,它会为您提供这个真正的文本框,它可以接受任何内容、html、javscript 等...

这很好,很花哨,直到我意识到两个孪生兄弟。对于 HTML 字段,没有任何形式的编辑器可供用户使用。他们不能加粗、更改字体、大小等。另一个问题是我在其中输入了一些 javascript 并单击了保存。下次我打开该页面时,我会看到我在 HTML 字段中输入的 javascript 警报。

所以这是我的两个问题:

我怎样才能给用户一个编辑器(任何类型的),让他们能够塑造他们的关于部分。

如何验证允许您执行我在第一个问题中要求的字段?我对验证此类输入还很陌生,而且我已经搜索了很多次,但几乎没有答案。

编辑:

我忘了包括我确实找到了这个指南:https://docs.silverstripe.org/en/3.1/developer_guides/forms/field_types/htmleditorfield/

从我在这里看到的是如何将其包含在后端(管理控制台)中,但我无法弄清楚如何将其包含在 AboutMe 页面上。所以 www.mywebsite.com/AboutMe/edit/1

编辑2:

进一步的研究让我找到了一个解决方案,可以让我在我的页面上显示 TinyMCE 编辑器。我上面列出的文档没有说缺少 init 函数,我需要将它添加到页面才能让编辑器工作。这是缺少的内容:

<script type="text/javascript">

tinyMCE.init({
theme : "advanced",
mode: "textareas",
theme_advanced_toolbar_location : "top",
theme_advanced_buttons1 : "bold,italic,underline,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,outdent,indent,separator,undo,redo",
theme_advanced_buttons2 : "forecolor",
theme_advanced_buttons3 : "",
height:"250px",
width:"400px"
});

</script>

我的第二个问题仍然存在。我如何验证此处出现的所有文本? TinyMCE 将通过 javascript 为我做一些验证,但我们总能找到解决方法。我将执行何种后端 (php) 验证以确保输入的文本安全?

我唯一能想到的就是创建一个允许的每种字符组合的白名单,但这似乎有点太不对了。

最佳答案

我想到了几件事。

我知道你已经走到这一步了,但你可以尝试扩展 HTMLEditorField 并使用它自己的 TinyMCE 配置以你想要的方式自定义字段。

至于验证,您可以在您的数据对象(或您要将未净化的 HTML 保存到的任何对象)上使用 onBeforeWrite() 来清理输入。可能为此使用一个库,或者如果你只是将标签列入黑名单,你可以使用 PHP 的 strip_tags function。 .

关于php - Silverstripe HTML 字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33321892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com