首页
学习
活动
专区
工具
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函数查找....总结 一次次的修补,一次次的绕过,感觉开发者应该是没有理解到漏洞利用的原理,一直以类黑名单的形式在修复,而黑名单的形式总是容易被绕过。

    2.1K30

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

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

    1.4K00

    PHP 代码混淆处理思路

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

    1.8K40

    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.6K20

    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()

    62210

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

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

    50320

    给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()

    76530

    空指针-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.9K30

    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.3K20

    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(

    77820

    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",",");

    98770

    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漏洞信息泄露,这个漏洞是指开发人员发布代码的时候可能存在不规范的代码和配置,造成源代码泄露,从而泄露重要信息,个人信息,数据库信息,数据库密码等等。

    33730

    根据访问请求客户端类型自动跳转到对应的页面地址,自动跳转到手机页面

    在智能移动终端横行霸道的今天,使用移动终端来访问网站的用户是越来越多,但针对PC用户开发的网站,在移动终端上的体验非常差,这不,我们开始针对移动终端也制作了体验相对更好的页面,那么我们怎么才能知道用户使用的是哪种终端来访问我们的网站呢...,如果有其他特殊浏览器也可以附加上条件 if(check.match(/mobile/i) || check.match(/X11/i)) { window.location...php $agent = $_SERVER['HTTP_USER_AGENT']; if( strpos($agent,"comFront") || strpos($agent,"iPhone...|| strpos($agent,"UCWEB")//UC Mobile Limited || strpos($agent,"Android")//android || strpos($...> 本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息: 原文出处:Yiiven https://www.yiiven.cn/php-terminal-identity.html

    3K20

    74CMS后台RCE分析

    文件导致恶意代码被执行,最后实现getshell,整个漏洞挖掘思路很是别出心裁,同时也算是给自己了一个警醒——"小功能点"不容小视,下面对该漏洞进行一个简易分析 影响范围 74CMS_v5.0.1 利用条件...注意:I 函数的变量类型不区分大小写,但变量名严格区分大小写,比如 I('get.id') 可以写成 I('GET.id'),但不能写成 I('get.ID')变量过滤 I函数本身默认的过滤机制是htmlspecialchars...data,'think_filter'); return $data; } 再上述I函数中,参数name——>request.site_domain,参数tyep为's',即数据类型未字符串,之后进入到紧跟着的...之后在进行下面的另一个if...else判断,此处的name不为空,所以直接进入else语句中,之后通过语句:isset(input[name])来判断是否设置name的值,此时的判断等级于isset(...在利用漏洞的最后一个阶段,我们只需要访问url.php,之后使其内部的代码执行即可实现写文件到当前目录下的403.php中~ 文末小结 很多时候,在代码审计过程中我们往往会忽略一些细小的功能点,例如本文的网站域名更新设置

    2K20
    领券