在注册程序,或者留言程序中,判别用户发送的数据中是否有非法的关键词,可以用strpos()函数。用法是strpos("abc", "b"),运行的结果是1。如果是strpos("abc", "a"),运行的结果是0;如果是strpos("abc", "d"),运行的结果是空。如下程序:
if (strpos($ga, $gb)!=0) {} 或者省略为
if (strpos($ga, $gb)) {}
大括号里,是根据数据中是否有关键词,来决定是否要执行的程序。我做了一下测试,这里的strpos($ga, $gb),$gb是用户发送的数据,$ga是我们设定的关键词。当如strpos("abc", "a")运行结果为0的时候,与strpos("abc", "d")运行结果为空的时候,上述的if判断都列为同一种情况,导致这个判断会产生失误,使大括号的程序不能正常运行。
解决的办法是,让strpos("abc", "a")运行结果为0的时候,使其变为1,方法是strpos("a".$ga, $gb),也就是在变量$ga前面加任意一个字符,if (strpos("a".$ga, $gb)!=0) {} 或者省略为 if (strpos("a".$ga, $gb)) {}。这样一来,当运行结果为空的时候,结果仍然是空。不再是被判为同一种情况,问题解决。
5条评论:
1 stefyang 2009-02-01 22:04
if (strpos($ga, $gb)!==false)
3 stefyang 2009-02-03 09:33
共同进步哈
4 烂柯之聊 2009-02-03 11:57
牛年你最牛!
5 自由勇 2009-02-15 11:45
Trackback来自 《2点更正》
感谢剪子兄和他的同事,以及一楼的stefyang朋友的指正。