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

Strpos返回预期之外的其他结果-始终为真

strpos是PHP中的一个字符串函数,用于查找一个字符串中是否包含另一个子字符串,并返回子字符串在原字符串中的位置。

答案: strpos函数在查找子字符串时,如果找到了匹配的子字符串,则返回子字符串在原字符串中的起始位置(位置从0开始计数)。如果没有找到匹配的子字符串,则返回false。

然而,当strpos返回预期之外的其他结果-始终为真时,可能是由于以下原因之一:

  1. 参数传递错误:strpos函数接受三个参数,分别是要搜索的字符串、要搜索的子字符串和可选的起始搜索位置。如果参数传递错误,例如传递了错误的数据类型或顺序,就会导致返回预期之外的结果。确保正确传递参数可以避免这个问题。
  2. 字符串编码问题:strpos函数对于不同的字符串编码可能会有不同的行为。如果字符串使用的是多字节编码(如UTF-8),则可能需要使用mb_strpos函数来进行查找,以避免返回错误的结果。
  3. 子字符串重复出现:如果子字符串在原字符串中多次出现,strpos函数只会返回第一次出现的位置。如果你期望返回所有匹配位置,可以使用strpos的变种函数stripos,并结合循环来实现。

综上所述,要解决strpos返回预期之外的其他结果-始终为真的问题,需要确保正确传递参数、处理字符串编码问题,并根据具体需求选择合适的字符串查找函数。

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

相关·内容

php一句话木马深度解析

什么是一句话木马 一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。我们可以利用一句话木马来对主机进行渗透操作,最常见的工具就是号称黑客之刃的中国菜刀。...2.在获取返回结果的时候,一定要加上自己的标识,不然的话没法判断,我们把上面那个字符串解密之后的结果是 echo 'success'; 我们需要加上类似于和这样的标记,...等取到返回值,再利用下面的代码来获取我们想要的返回值 mb_substr( $result , (mb_strpos($result,"") + mb_strlen(""...末尾的话 本来今天想多分享几篇来着,但是我家宽带不知道抽什么风,除了我的网站之外其他的网站都可以访问,一到我的网站就提示ERR_CONNECTION_RESET,,所以说整篇文章我都是在离线状态下打的,...,源码以后再放出来 如无特殊说明《php一句话木马深度解析》为博主MoLeft原创,转载请注明原文链接为:https://moleft.cn/post-8.html

3.9K20
  • PHP7新特性和变化

    " => false]); // 将除 MyClass 和 MyClass2 之外的所有对象都转换为 __PHP_Incomplete_Class 对象 $data = unserialize($foo...; 预期 它使得在生产环境中启用断言为零成本,并且提供当断言失败时抛出特定异常的能力。...当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是null #php5 function($a = null){ if($a===null) { return null;...但大小写不敏感的常量会在使用中造成一点麻烦。所以,为了解决这个问题,PHP 7.3 废弃了大小写不敏感的常量。 原先的情况是: 类常量始终为「大小写敏感」。...使用const关键字定义的全局常量始终为「大小写敏感」。注意此处仅仅是常量自身的名称,不包含命名空间名的部分,PHP 的命名空间始终为「大小写不敏感」。

    4K41

    闭包 + 局部作用域 === 如鱼得水

    foo()函数以一个函数对象作为返回值。在foo()函数执行后,其返回值被赋值给了变量fn并调用fn()。实际上只是通过不同的标识符引用调用了这个被作为返回值的函数对象。...关于闭包,概念拎的差不多,再说也就那样,这玩意还是要能真悟到,不然还是会想不通的。 下面说个闭包的典型应用,for循环。...所以五个延迟函数在执行时都读到同一个值为6的变量i,最后结果最后打印结果也就是五个6。 理解上面的原因,需要理解两个知识点:js中同步异步的执行顺序原理、作用域的工作原理。...这其实就是闭包的实现。一个函数可以始终访问到所处作用域中的变量,而不管这个函数是否会在该作用域之外执行。...当函数可以始终记住并访问其所在作用域,即使该函数在该作用域之外执行,这种情况就产生了闭包。 闭包的形成需要两要素:存在访问目标的局部作用域、函数始终保持对该作用域的引用。

    60930

    PHP代码安全杂谈

    一、精度绕过缺陷 理论 在用PHP进行浮点数的运算中,经常会出现一些和预期结果不一样的值,这是由于浮点数的精度有限。...这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118…。...一个简单的例子 由于php对变量自动转换的特性,这里面的 $a==$b 与 $c==$d 均为真 所以页面输出的结果为: 一个深入的例子 下面结合PHP 相等性比较缺陷再解释下会好懂一点: var_dump...strpos()函数:查找字符串在另一字符串中第一次出现的位置,对大小写敏感。 这2个函数都是用来处理字符串的,但是在传入数组参数后都将返回NULL。...password[]=gg ereg()函数是处理字符串的,传入数组后返回NULL,NULL和 FALSE,是不恒等(===)的,满足第一个if条件;而strpos()函数也是处理字符串的,传入数组后返回

    1.7K60

    《你不知道的JavaScript》:闭包与局部作用域

    foo()函数以一个函数对象作为返回值。在foo()函数执行后,其返回值被赋值给了变量fn并调用fn()。实际上只是通过不同的标识符引用调用了这个被作为返回值的函数对象。...fn()可以被正常执行,并且还是在被自己定义的词法作用域之外执行。 这就是闭包的神奇了。...关于闭包,概念拎的差不多,再说也就那样,这玩意还是要能真悟到,不然还是会想不通的。 下面说个闭包的典型应用,for循环。...所以五个延迟函数在执行时都读到同一个值为6的变量i,最后结果最后打印结果也就是五个6。 理解上面的原因,需要理解两个知识点:js中同步异步的执行顺序原理、作用域的工作原理。...当函数可以始终记住并访问其所在作用域,即使该函数在该作用域之外执行,这种情况就产生了闭包。 闭包的形成需要两要素:存在访问目标的局部作用域、函数始终保持对该作用域的引用。

    52720

    php函数笔记

    strpos() 返回字符串在另一个字符串中第一次出现的位置。 strpos 区别大小写strpos查找成功后则是返回的是位置。因为位置有可能是0,所以判断查找失败使用===false更合适。...//$res为总的数组,1为规定取出元素的开始位置。2为需要返回的数组数量。 define() 函数定义一个常量 define("GREETING","Hello world!")...e2:e3,若e1为真(非0),则此表达式的值为e2的值;若为假,则表达式的值为e3 例如: preg_match('|Location: (.+)\r|', $src, $res); $songurl..."code": 200 } php处理: $eo='上面的json数据'; $obj=json_decode($eo,true); echo $obj['songs'][0]['mp3Url']; 结果返回...之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数. rawurlencode()功能和urlencode基本一样,采用的是RFC1738编码,因此空格会编码为%20 sprintf()

    1.2K20

    PHP strpos,strstr,strpbrk这几个函数有什么区别

    如果字符不存在,则返回false。 如果needle不是一个字符串,那么它将被转化为整型并且作为字符的序号来使用。 ? strpos 查找字符串首次出现的位置。 ?...对比两个函数的内部实现,除了offset之外,其实际差别在于strstr最后返回了字符串,strpos返回的是一个数。由于字符串返回的时候涉及到字符串复制的过程,因此会有速度和内存上的损耗。...相对于上面两个函数,strpbrk相对粗暴些,直接两个循环,实现字符的查找。在性能上,应该是这三个函数垫底的了。 总结 以字符串ABCGCAC为例。...strpos 返回的是完整匹配查询字符串的第一次出现位置。strpos('ABCGCAC','CA')返回结果是4。 strpbrk 返回的是字符列表中匹配的任意一个字符第一次出现之后的字符串。...strpbrk('ABCGCAC','CA') 返回的内容是ABCGCAC strstr 返回的是完整匹配查询字符串第一次后出现后的字符串,strstr('ABCGCAC','CA') 返回结果CAC

    93520

    看代码学渗透 Day4 - strpos使用不当引发漏洞

    在上面这个例子中,strpos 函数返回查找到的子字符串的下标。如果字符串开头就是我们要搜索的目标,则返回下标 0 ;如果搜索不到,则返回 false 。...在这道题目中,开发者只考虑到 strpos 函数返回 false 的情况,却忽略了匹配到的字符在首位时会返回 0 的情况,因为 false 和 0 的取反均为 true 。...我们尝试使用以下 payload ,观察 strpos 函数的返回结果。 user= ?...在 sn 函数内部,会根据id到pwd_tmp表中判断是否存在对应的临时密码记录,根据结果确定分支,走向 newmail 函数。...而恰好漏洞的触发点就在这里,我们看看 第13行 至 第18行 的代码,如果 ($send == 'N') 这个条件为真,通过 ShowMsg 打印出修改密码功能的链接。

    1.4K10

    给PHP开发者讲讲PHP源码-第二部分

    尝试的第一步,就是去PHP 5.4根目录然后在页面顶部的搜索框输入strpos。搜索的结果是一个很大的列表,展示了strpos在PHP源码中出现的位置。 因为这个结果对我们并没有太大的帮助,我们使用一个小技巧:我们搜索"PHP_FUNCTION strpos"(不要漏了双引号,它们很重要),而不是strpos....这就是一个典型的头文件(以.h后缀结尾的文件)的样子:单纯的函数列表,函数在其他地方定义。事实上,我们对这些并不感兴趣,因为我们已经知道我们要找的是什么。...php_memnstr返回指向needle在haystack第一次出现的位置的指针(这就是为什么found变量要定义为char *,例如,指向字符的指针)。...然后strpos函数会设置needle_char[1]为0。这背后的原因是因为,在 C里面,字符串是使用'\0'结尾,就是说,最后一个字符被设置为NUL(编码为0的字符)。

    95980

    由定界符引发的一些安全问题

    SELECT * FROM Users WHERE ((Username='1' or '1' = '1'))/*') AND (Password=MD5('$password'))) 这样一来让语句始终保证为真...返回连接到字符串中的输入值,该字符串由定界符字符串分隔。 delimiter Required argument. Needs to be a string. 必填参数,且是一个字符串。...gender" LIMIT 1 OFFSET 1 -- 若以 private 列查询,并将 username 列聚合,结果在 django 中显示为: {'private':'admin','username...下面就可以演示此漏洞: 我们定义一个数据库为 django_sql 有表test_sql_userinfo,内容如下: 有表sql_admin,内容如下: 正常情况下,我们令定界符为:-,返回结果如下...id"-- 返回结果如下: 成功注入出其他数据 这种注入虽然可控的概率很小,但是依旧是个 SQ L 注入漏洞,而且是一个比较经典的由于定界符问题引起的注入 4、DOS 攻击 这个实际案例(CVE-2008

    1.2K20

    PHP7.+系列新特性和新变更

    返回值类型声明 增加了返回类型声明,类似参数类型。..." => false]); // 将除 MyClass 和 MyClass2 之外的所有对象都转换为 __PHP_Incomplete_Class 对象 $data = unserialize($foo...预期 它使得在生产环境中启用断言为零成本,并且提供当断言失败时抛出特定异常的能力。...,B} 13.生成器支持返回表达式 它允许在生成器函数中通过使用 return 语法来返回一个表达式 (但是不允许返回引用值), 可以通过调用 Generator::getReturn() 方法来获取生成器的返回值...echo $gen->getReturn(), PHP_EOL; # output //1 //2 //3 14.生成器委派 现在,只需在最外层生成其中使用yield from,就可以把一个生成器自动委派给其他的生成器

    66930

    什么是SQL注入攻击,如何防范这种类型的攻击?

    这样,SQL查询就会变成:SELECT * FROM users WHERE username = '' OR '1'='1' AND password = ''由于'1'='1'始终为真...,这个SQL查询将会返回所有用户的信息,从而绕过了身份验证。...尽管结果显示为空,但查询条件'1'='1'始终为真,攻击者可以通过不同的条件语句来判断查询结果,达到盲注攻击的目的。4....应该始终对用户输入进行验证和过滤,只接受符合预期格式的数据。例如,可以使用正则表达式来检查输入是否匹配预期的模式。应用程序还应该使用参数化查询或预编译语句,以保护用户输入不被直接拼接到SQL查询中。...在开发和维护应用程序时,始终要注意输入验证、过滤和参数化查询,以及使用安全的API和框架。同时,尽量遵循最小权限原则,并定期更新和维护系统。

    2.2K30

    BUU-WEB-第一章

    //返回要查找的字符串在别的字符串中首次出现的位置 ); //mb_strpos(haystack,needle)...&& emmm::checkFile($_REQUEST['file'] 3.这里我们的值传到emmm类里面的checkFile函数 这三个值通过&&逻辑与运算连接也就是要求这块函数的返回值全为真才能执行...if里面的文件包含的代码,否则就执行else里面的图片 我们再来看看其他函数 //mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置 // mb_strpos (haystack...file=hint.php image.png flag现在出现字眼了,可能在根目录下面吧,根据源码,包含结果必须是file后面的参数能过checkFile的检查,反向推一遍,这里面有两个函数 mb_substr...[强网杯 2019]随便注 image.png 姿势默认值为1,我们提交得到了回显。

    56020

    如果让 strpos 查找一个整数类型的数字会发生什么?

    每次数据来了,想要查找这个字符串中某个字符,上来就是使用strpos。strpos用于查找字符串中某个子串第一次出现的位置。 那么,如果不小心给strpos传入的是一个整数类型又会怎么样呢?...上面得到的是一个空字符串 查看php 源码中string.c的文件,找到strpos的代码。strpos对于非字符串类型的数据使用php_needle_char做了一次类型转换,强制类型转换。 ?...所以当你传入585的时候,使用char进行强转之后得到的结果是字符串"I",所以实际上截取之后的字符串长度为0。...类型转换分为下列几种情况: 1、整形,长整型直接转成char类型 2、布尔值,分别转成字符'1','0',所以strpost('e1',true);返回内容为1 3、double类型数据,先强转为长整型再转换成...char类型 4、对象则对对象id进行char的转换 5、其他类型触发E_WARNING的警告到这里就了解了为什么给一个整数,strpos会有意向不到的结果。

    81020

    BUUCTF 刷题笔记——Web 0

    为并置运算符,表示连接两个字符串; 因此,mb_strpos 返回的是 $page 字符串中的字符 '?' 之前的所有字符串,又因为字符串末尾置了一个 '?' ,若原字符串中不含 '?'...因此给 file 赋的字符串必须为包含文件 ffffllllaaaagggg 的路径名。 ​...接下来我们需要让 checkFile() 返回为 true ,由于必须包含 ffffllllaaaagggg ,因此第一个白名单判断肯定无法使用,而第二个 if语句可以。...POST请求没有长度限制 GET 方法 通过GET提交数据,用户名和密码将明文出现在URL上,因为登录页面有可能被浏览器缓存,GET请求请提交的数据放置在HTTP请求协议头 或者其他人查看浏览器的历史纪录...因此,其实只需要让 username='&username&'and password='&password&' 语句为真即可。

    1.3K20
    领券