【问题标题】:Why strpos + strlen is not secure in PHP (ex: exact matching)为什么 strpos + strlen 在 PHP 中不安全(例如:精确匹配)
【发布时间】:2015-11-07 19:52:49
【问题描述】:

我与老师讨论了mb_ 函数。无论如何,一件事导致另一件事,我们改变了主题,他给了我一个例子,strposstrlen 可能有问题,据他说:

$input  = "something"; # input given by the user
$string = "hello";     # string to match

if ( strpos($input, $string) !== false && strlen($input) < strlen($string) ) {
    echo "Correct input";
} else {
    echo "Incorrect input";
}

(问题不在于如何匹配2个字符串)

按照我老师的说法,可能有办法验证语句并执行代码echo "Correct input";

但是,我看不出这有什么缺陷。也许编码可能有问题?你有什么想法吗?

【问题讨论】:

  • @arif_suhail_123 !== 比较值类型。这是有效的语法。
  • 期待这个代码检查什么?
  • 是的,你在问什么?第一个条件是假的,所以第二个条件甚至都没有关系。
  • 我的问题没有很好地表达,我更正了,对不起。

标签: php strpos strlen


【解决方案1】:

好吧,我认为缺陷将是 if 语句逻辑

您将如何使用strpos 函数来检查字符串中子字符串第一次出现的位置,同时您想检查输入是否大于主题?

逻辑上是不可能的

【讨论】:

  • 确实这似乎是不可能的,但是,根据我的老师的说法,有办法。我问他,但他不想告诉我,即使经过几天的思考。我知道我的问题没有很好地表述。
  • 您的示例中的 $input 和 $string 是否正确?或者他们就是这样的例子?
猜你喜欢
  • 2019-04-03
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多