首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP的strpos()不工作,总是进入if条件

PHP的strpos()函数用于在字符串中查找子字符串,并返回第一次出现的位置。如果子字符串不存在,则返回false。

当strpos()函数不工作且总是进入if条件时,可能有以下几个原因:

  1. 参数顺序错误:strpos()函数的参数顺序是先传入要搜索的子字符串,再传入要搜索的字符串。确保参数的顺序正确。
  2. 严格比较:strpos()函数返回的位置是从0开始的索引值,如果子字符串出现在字符串的开头位置,返回的索引值为0。在if条件中,如果使用了非严格比较(==),则0会被解释为false,导致进入if条件。可以使用严格比较(===)来避免这个问题。
  3. 类型错误:strpos()函数要求传入的参数是字符串类型。如果传入的参数不是字符串类型,可能会导致函数不工作。可以使用var_dump()函数来检查参数的类型,并确保传入的参数是字符串类型。
  4. 子字符串不存在:如果要搜索的子字符串在字符串中不存在,strpos()函数会返回false。在if条件中,如果没有处理这种情况,可能会导致进入if条件。可以使用条件语句来判断返回值是否为false,并进行相应的处理。

综上所述,可以根据具体情况来检查以上可能的原因,并进行相应的调试和处理。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议参考腾讯云官方文档或咨询腾讯云的技术支持团队,获取相关产品和解决方案的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MetInfo 任意文件读取漏洞修复与绕过

漏洞简介 MetInfo是一套使用PHP和Mysql开发内容管理系统。 MetInfo 6.0.0~6.1.0版本中 old_thumb.class.php文件存在任意文件读取漏洞。...目标是进入到第一个 if 里面的readfile(dir);,读取文件。看看 if 语句条件,里面的是将dir中包含_M'url'部分置空,这里可以不用管。...外面是一个strstr函数,判断dir中http字符串首次出现位置,也就是说,要进入到这个 if 语句里面, 从上面的分析可以构造出 payload,只要$dir里包含http字符串就可以进入到readfile...///config/config_db.php 第三次绕过 再次提交之后,官方知悉该绕过方式,又补了一次了。 看下diff 看到补丁,又多加了一个判断条件,使用strpos函数查找....总结 一次次修补,一次次绕过,感觉开发者应该是没有理解到漏洞利用原理,一直以类黑名单形式在修复,而黑名单形式总是容易被绕过。

2K30

PHP 代码混淆处理思路

昨天在一个 PHP 群里看到一个图片,图片如下: ? 看到这个图片,我觉得这应该是某个收费项目的源码,收费项目为什么还要提供源码,这就是 PHP 问题之一吧。...很多人也许想要修改这样源码,但是无奈源码又是这样让人看不懂。拿到这样源码,我估计很多想要修改源码一部分人就被卡住了。在这种情况下,我想说是,作者既然这么做了,就是希望被别人修改。...如果真的觉得项目好的话,其实可以去付费,毕竟软件是每个软件工程师汗水。 虽然话是这么说,但是如果只是单纯想要学习,也产生什么利益的话,遇到这样问题有什么办法呢?...虽然我对 PHP 不怎么懂,但是我知道对于 PHP 这种源代码层面的处理想要还原问题不大(我自己臆想,毕竟各种处理方法可能很多,只是我不知罢了),关键在于还原一下值不值。...,也就是从文件开头到结尾这么进行执行,如果能把 goto 去掉的话,你就得到了一份真正执行顺序代码,其实 goto 就是无条件跳转,我们将离散用 goto 连接代码,变成线性就可以了; 除了满屏

1.7K40

代码审计Day4 - strpos使用不当引发漏洞

最近我们小组正在做一个PHP代码审计项目,供大家学习交流,我们给这个项目起了一个名字叫 PHP-Audit-Labs 。...我们先来看一下 strpos 函数定义: strpos — 查找字符串首次出现位置 作用:主要是用来查找字符在字符串中首次出现位置。...跟进到 第11行 ,当我们传入问题和答案非空,而且等于之前设置问题和答案,则进入 sn 函数。然而这里使用是 == 而不是 === 来判断,所以是可以绕过。...假设当前我们第一次进行忘记密码操作,那么此时 $row 应该为空,所以进入第一个 if(!...而恰好漏洞触发点就在这里,我们看看 第13行 至 第18行 代码,如果 ($send == 'N') 这个条件为真,通过 ShowMsg 打印出修改密码功能链接。

1.3K00

DedeCMS v5.7 SP2后台SSTI到RCE再到GetShell

影响范围 DedeCMS v5.7 SP2 利用条件 登陆后台(有点鸡肋,但是可以结合DedeCMS其他漏洞进行利用) 漏洞概述 DedeCMS v5.7 SP2后台允许编辑模板页面,通过测试发现攻击者在登陆后台前提条件下可以通过在模板中插入恶意具备...之后在index.php中会通过数据库查询来获取homepageset数据信息,并且将templet字段值作为参数传递给MfTemplet函数: ?...那么进入Save函数有什么问题呢?我们这里可以看一下Save函数逻辑设计: ?...下面我们回到正题,继续来看后续index.php文件逻辑,由于此时$row['showmod']默认为"0",所以直接进入到else语句中调用display函数: ?...前端SSTI到GetShell等,总之安全总是在攻防两端不断演化与进步~

8.5K20

PHP开发者九条建议

而且近年来像XSS和CSRF攻击也变得大行其道,使得"黑客"们貌似又有了一把把利器,而我们总是处于被动状态。不过我们要记得是下面这两个原则: 1. 永远不要相信用户输入东西。 2....比如说很多时候我们得考虑清楚,该用==还是===,如果你使用过strpos()这个函数,下面的代码可能会给你一个直观感受: <?...php $authors = 'Chris & Sean'; if (strpos($authors, 'Chris')) { echo 'Chris is an author....我们其实可以这样: <?php if (strpos($authors, 'Chris') !== FALSE) { echo 'Chris is an author....9.用isset()代替strlen() 如果你需要在项目代码中需要根据一个字符串长度来做条件判断,这个时候非常推荐你直接使用isset(),因为在同等条件之后,isset()速度是strlen()

61110

PHP开发者九条建议

而且近年来像XSS和CSRF攻击也变得大行其道,使得"黑客"们貌似又有了一把把利器,而我们总是处于被动状态。不过我们要记得是下面这两个原则: 1. 永远不要相信用户输入东西。 2....比如说很多时候我们得考虑清楚,该用==还是===,如果你使用过strpos()这个函数,下面的代码可能会给你一个直观感受: <?...php $authors = 'Chris & Sean'; if (strpos($authors, 'Chris')) { echo 'Chris is an author....我们其实可以这样: <?php if (strpos($authors, 'Chris') !== FALSE) { echo 'Chris is an author....9.用isset()代替strlen() 如果你需要在项目代码中需要根据一个字符串长度来做条件判断,这个时候非常推荐你直接使用isset(),因为在同等条件之后,isset()速度是strlen()

74130

3分钟短文 | PHP极速匹配子字符串,你是怎么做

; if ($a contains 'are') echo 'true'; PHP 中推荐做法是使用 strpos 函数,如果有匹配,则返回首次出现位置,也就是 int 类型值;如果没有...== false; } 延伸学习 那么是不是一个 strpos 就够用了呢?显然不是,举例说明总是那么简单,现实情况却如此复杂。...因为我们匹配字符串,有可能是包含了各式各样编码后字符串,如果做到通用?只有 PHP MbString 扩展了。...但是strpos能做,在正则匹配来说,是小菜一碟。 下面是 preg_match 实现方式: $a = 'How are you?'...写在最后 从优秀案例中学习 PHP 函数深度用法,可以大大提升我们编程能力。抛开设计模式不说,PHP那些极为实用函数,你真的都掌握了吗?

48920

php常用字符串查找函数strstr()与strpos()实例分析

本文实例讲述了php常用字符串查找函数strstr()与strpos()。分享给大家供大家参考,具体如下: 一句话使用strpos判断 ===或!...php $mystring = 'abc'; $findme = 'a'; $pos = strpos($mystring, $findme); // 注意这里使用是 ===。...简单 == 不能像我们期待那样工作, // 因为 'a' 是第 0 位置上(第一个)字符。...= 不能像我们期待那样工作, // 因为 'a' 位置是 0。语句 (0 != false) 结果是 false。 if ($pos !...2、strripos(),计算指定字符串在目标字符串中最后一次出现位置(区分大小写) 总结:注意这几个函数如果没找到时则会返回FALSE,故在判断两边是否相等时候(if),注意两边类型,以上几个函数

1.6K31

MetInfo 任意文件读取漏洞修复与绕过

漏 洞 简 介 MetInfo是一套使用PHP和Mysql开发内容管理系统。 MetInfo 6.0.0~6.1.0版本中 old_thumb.class.php文件存在任意文件读取漏洞。...目标是进入到第一个 if 里面的readfile($dir);,读取文件。看看 if 语句条件,里面的是将$dir中包含$_M['url']['site']部分置空,这里可以不用管。...外面是一个strstr函数,判断$dir中http字符串首次出现位置,也就是说,要进入到这个 if 语句里面,$dir中包含http字符串即可。...///config/config_db.php 第三次绕过 再次提交之后,官方知悉该绕过方式,又补了一次了。 看下diff 看到补丁,又多加了一个判断条件,使用strpos函数查找....总 结 一次次修补,一次次绕过,感觉开发者应该是没有理解到漏洞利用原理,一直以类黑名单形式在修复,而黑名单形式总是容易被绕过。

1.2K20

空指针-Base on windows Writeup -- 最新版DZ3.4实战渗透

这一下子提起了我兴趣,接下来我们就一起梳理下这个渗透过程。 与默认环境区别是,我们这次拥有两个额外条件。...1、Web环境后端为Windows 2、我们获得了一份config文件,里面有最重要authkey 得到这两个条件之后,我们开始这次渗透过程。...换言之,我们必须登录后台使用后台修改功能,才能配合getshell。至此,我们渗透目标改为如何进入后台。 // 如何进入DZ后台?...// 首先我们必须明白,DZ前后台账户体系是分离,包括uc api在内多处功能,login都只能登录前台账户, 也就是说,进入DZ后台唯一办法就是必须知道DZ后台密码,而这个密码是不能通过前台忘记密码来修改...,DZ自带注入waf挺奇怪,核心逻辑在 \source\class\discuz\discuz_database.php line 375 if (strpos($sql, '/') === false

1.8K30

strpos() 函数判断字符串中是否包含某字符串方法

phpstrpos() 函数判断字符串中是否包含某字符串方法 判断某字符串中是否包含某字符串方法 if(strpos('www.idc-gz.com','idc-gz') !...== false){    echo '包含';   }else{    echo '包含';   } PHP strpos() 函数 strpos() 函数返回字符串在另一个字符串中第一次出现位置...如需进行对大小写不敏感搜索,请使用 stripos()函数。 编辑本段例子   <?php   echo strpos(www.idc-gz.com,"idc");   ?...== false){   echo '包含';   }else{   echo '包含';   } 很多人用下面的判断方法,是错误: if(strpos('www.idc-gz.com...','idc-gz') ){   echo '包含';   }else{   echo '包含';   } 上面也能得出正确结果,但方法是错误,如果if(strpos(‘idc-gz.com

2.3K31

WordPress 5.9 提供了 PHP 8 新增三个字符串函数 polyfill

PHP8 引入 3 个处理字符串方法,分别是 str_contains()、 str_starts_with()、 str_ends_with(),大家一看方法名就已经猜到这三个方法作用了,而 WordPress...polyfill 意思是即使你服务器 PHP 版本没有 8.0 版本,WordPress 也自己实现了这三个函数,只要你 WordPress 是 5.9 版本,就可以完全放心使用 str_contains...在 PHP7 中我们一般使用 strpos 方法来检测,但是使用起来总是不够直观,经常还需要查询文档才能明白什么意思,特别是对于新手程序员来说,更不容易理解。...在 PHP7 中我们经常使用 substr_compare 或 strpos 来实现相应功能,这样代码不够直观,而且效率也不高。...现在,为了避免这种内部干扰,PHP 7.3 推出了新函数来解决这个问题: key = array_key_first(array); 获取数组第一个元素键名key = array_key_last(

74620

PHP判断访客是否手机端(移动端浏览器)访问方法总结【4种方法】

本文实例总结了PHP判断访客是否手机端(移动端浏览器)访问方法。...分享给大家供大家参考,具体如下: 在平常工作开发中,我们通常需要开发出PC端和移动端两个不同系统,从而根据访问端不同进入到不同操作界面中。...本博文讨论使用PHP判断访问端是否是移动端(或是移动端浏览器)从而确定是移动端访问4种方法: 1、根据 HTTP_X_WAP_PROFILE是否存在进行判断,存在则是移动端(部分服务商会屏蔽该信息)...== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT...相关内容感兴趣读者可查看本站专题:《PHP网络编程技巧总结》、《php正则表达式用法总结》、《php curl用法总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结

1.6K21

php函数笔记

TIME: 20190120 工作几年回过头来发现最近真理这篇post都是17年4月份了。看来工作之后真是进步或许没时间亦或变懒,不为简单函数做笔记。 大多都外链工具所用到,整理整理,以便后用。...strpos() 返回字符串在另一个字符串中第一次出现位置。 strpos 区别大小写strpos查找成功后则是返回是位置。因为位置有可能是0,所以判断查找失败使用===false更合适。...substr() 取固定长度字符串 zhuaqian=strpos(titleList[0][0],"title>"); zhuahou=strpos(titleList[0][0],"_免费高速下载...设置此函数的话默认为30s str_replace()使用一个字符串替换字符串中另一些字符。 header()向客户端浏览器发送 HTTP 。...php中?(问号)和:(冒号)作用:精简if语句 条件表达式e1?

1.2K20

介绍一个很爽 php 字符串特定检索函数---strpos()

大家在用 php 开发时候 是否 有遇到过,对于一个获取字符串,如果想要特定检测它是否 含有某个特定字符或者子字符串,总是找不到好方法,或者根本做不到,迫于无奈而使用foreach。...函数: strpos("","") 参数1:待检索字符串或字符串变量 参数2:要检测是否被含有的子字符串 成功,返回首个字符起始位置 没有找到就返回false 看到这里,估计你会有点疑问,博文标题明明写着...“php 字符串特定检索函数---strpos()”,但是却返回位置。...不用急,逆向思维,有则,证明要检测子字符串是被含有的,反之,没有。 下面个出个例子。 1 <?...php 2 //$combine = array(); 3 //$combine = explode("马克思主义基本原理周一第10,11,12节{第2-17周}祁润兴乐育楼C206",",");

96170

web-mfw解题思路

三、万事俱备,只欠flag: 进入Kali虚拟机cd到GitHack所在目录:  拉下网页源码: GitHack使用方法: 第一种:python GitHack.py URL.git/ 第二种...:python2 GitHack.py URL.git/        #因为GitHack工具只能在python2环境中运行  进入保存路径查看源码:  发现一个文件夹和一个php文件,两个都瞅瞅...; assert函数:将括号内字符当成代码来执行,并返回true或false。 strpos查找函数:查找..在$file中第一次出现位置,如果有则返回true,反之返回false。...可以给page变量输入任何字符,file传入到strpos查找函数中并没有..存在返回flase,执行右边代码,最终返回flag.php文件。...查看源代码拿下flag:  这道题考察了git漏洞信息泄露,这个漏洞是指开发人员发布代码时候可能存在规范代码和配置,造成源代码泄露,从而泄露重要信息,个人信息,数据库信息,数据库密码等等。

28930
领券