php strpose_PHP的strpos()函数导致程序执行不正常解决一例

在注册程序,或者留言程序中,判别用户发送的数据中是否有非法的关键词,可以用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朋友的指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值