处理Joomla组件中的表单输入

时间:2013-12-29 00:28:40

标签: joomla

我正在创建一个Joomla组件,其中一个页面包含一个带有电子邮件地址文本输入的表单。 在输入字段中键入<字符时,该字符及其后的所有内容都不会显示在输入中。 我试过了$_POST['field']JFactory::getApplication()->input->getCmd('field') 我还尝试过getCmd getVargetString等替代方案,但没有成功。

E.g。 John Doe <j.doe@mail.com>仅返回John Doe。

如果省略<,则John Doe j.doe@mail.com>值正确显示。 我还能做些什么呢?发布变量中的字符?

顺便说一句。我不得不使用&amp; LT;在这个问题中显示它,因为我想要它。这种形式也有同样的问题!!

2 个答案:

答案 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绝对可行,但请注意,根本没有过滤,这可能会在您的应用程序中打开安全漏洞。