我正在创建一个Joomla组件,其中一个页面包含一个带有电子邮件地址文本输入的表单。
在输入字段中键入<
字符时,该字符及其后的所有内容都不会显示在输入中。
我试过了$_POST['field']
和JFactory::getApplication()->input->getCmd('field')
我还尝试过getCmd
getVar
,getString
等替代方案,但没有成功。
E.g。 John Doe <j.doe@mail.com>
仅返回John Doe。
如果省略<
,则John Doe j.doe@mail.com>
值正确显示。
我还能做些什么呢?发布变量中的字符?
顺便说一句。我不得不使用&amp; LT;在这个问题中显示它,因为我想要它。这种形式也有同样的问题!!
答案 0 :(得分:0)
默认文本过滤器会根据您的字段输入修剪html。你应该设置属性
filter="raw"
在表单的manifest(xml)文件中,然后使用getRaw()
检索值。 getCmd删除非字母数字字符。
答案 1 :(得分:0)
您实际上需要在获取输入时设置所需的过滤。否则,你会得到一些重大的过滤。 (通常情况下,我也会失去@
个符号。)
替换此行:
JFactory::getApplication()->input->getCmd('field');
这一行:
JFactory::getApplication()->input->getRaw('field');
该函数的get
部分之后的名称是您将使用的过滤。 Cmd
除了字母数字字符和.
,-
和_
之外的所有内容。 String
将运行joomla的html clean标记功能,并根据您的设置清除<>
。 (这通常不适用于我,但我的设置通常非常开放,以至于不会对超级管理员进行过滤等等。
getRaw
绝对可行,但请注意,根本没有过滤,这可能会在您的应用程序中打开安全漏洞。