我有一个文本区域,我正在尝试添加youtube嵌入代码和其他HTML标记。 $this->input->post
正在将<iframe>
代码分别转换为<
和>
,而不是<h1>
和<h2>
代码。
知道如何存储这些值吗?
答案 0 :(得分:1)
如果你只需要少量的表格来允许iframe,我会写一个函数来恢复iframe(同时验证它是一个有效的YouTube嵌入代码)。
您也可以在配置中关闭global_xss_filtering(如果您正在使用它,也不要实现它),但这不是理想的解决方案(关闭所有安全性以使一件事工作通常是一个可怕的想法)
$config['global_xss_filtering'] = FALSE;
要查看过滤掉的所有标记,请查看CI_Input
类并搜索“$naughty
”变量。您将看到以管道分隔的列表(不要更改此类中的任何内容)。
答案 1 :(得分:0)
为什么不避免CI自动清理并使用htmlspecialchars($_POST['var']);
之类的内容?或者做一个辅助函数来消毒youtube网址......
答案 2 :(得分:0)
或者您可以直接询问视频ID代码或解析您所获得的代码。
这将允许您同时使用URL或嵌入代码。 同样只存储ID会占用数据库中较少的空间,您可以编写一个辅助函数来输出嵌入代码/ url。
答案 3 :(得分:0)
在这种情况下,使用$_POST
代替$this->input->post
来获取原始文本区域值,然后使用HTML Purifier清除内容而不会丢失<iframe>
标记想。
您需要查看HTML Purifier文档以获取详细信息。请检查this specific documentation page about "Embedding YouTube Videos"。