【发布时间】:2011-12-08 12:00:26
【问题描述】:
我的网站上有一个新功能,用户可以通过文本区域提交任何文本(我停止了所有 HTML 条目)。我仍然遇到的主要问题是他们可以输入“http://somewhere.com”,这是我想停止的。我还想将特定单词列入黑名单。这是我之前的:
if (strpos($entry, "http://" or ".com" or ".net" or "www." or ".org" or ".co.uk" or "https://") !== true) {
die ('Entries cannot contain links!');
但这不起作用,因为它完全阻止了用户提交任何文本。所以我的问题很简单,我该怎么做?
【问题讨论】:
-
如果我输入
Please go to www (dot) example (dot) com会怎样?无论如何,你不能在 strpos 函数中使用像这样的“或”列表。 -
感谢您指出这两点。我想我会将“www”、“(dot)”、“[dot]”、 以及所有变体列入黑名单,而不会将 dot 本身列入黑名单。
-
你在那里有效地做的就是说
if (strpos($entry,'1') !== true)。这将总是评估为TRUE,因为strpos()从不返回TRUE,除了您不能以这种方式使用or这一事实之外。 -
也看看这个帖子:stackoverflow.com/questions/1327112/… 如果我可以建议黑名单的代码行,那么它可能是
echo str_replace(array('not', 'allowed'),'',"not allowed, etc etc"); -
@Melsi 如果我输入
Not会怎样?如果我输入nOt会怎样?此外,如果我输入nothing会怎样?我不想看起来像输入了hing...如果来自 Clitheroe 的人似乎在说他们生活在英雄中,他们不会留下深刻的印象,而斯肯索珀斯也会同样不为所动...
标签: php html forms textarea blacklist