0

我已经回顾了这个问题的答案。我用谷歌搜索过这个。

我有一个变量在 php 5.4 ereg 上非常有效,但在最新的东西上却惨遭失败。

ereg($user.$pass, preg_replace('/\s/', '', trim($_POST['user']).trim($_POST['pass'])))

我没有高兴地尝试了以下方法:

preg_match('/^$user.$pass/',

preg_match('/{$user.$pass}/',

preg_match({$user.$pass},

preg_match('{$user.$pass}',

我不知道该怎么办。我也尝试重写代码以使用不同的输入行,但无济于事。

线路的其余部分是否也需要转义?

这个函数是否有可能不能轻松移植到最新的 php 版本中?

这是完整的代码行。它会查看用户和密码是否与此页面的用户和密码匹配并删除空格。(我可能应该在这个 if 语句之外对其进行清理。)它还检查 SESSIONS 状态。它可能有点难看,但在 5.4 中效果很好:

elseif(((!empty($_POST['user']) and !empty($_POST['pass']) and ereg($user.$pass, preg_replace('/\s/', '', trim( $_POST['user']).trim($_POST['pass'])))) 或 (isset($_SESSION['logged']) 和 ($_SESSION['logged'] === true) 和 isset ($_SESSION['user']) 和 ($_SESSION['user'] == $user))) 和 ($_SESSION['attempts'] < 5))

附加:我找到了绕过 ereg 或 preg_match 的方法。它工作得很好。

4

1 回答 1

0

ereg()和之间的(主要)用法差异preg_match是分隔符。

因此,如果您的代码是:

ereg($user.$pass, preg_replace('/\s/', '', trim($_POST['user']).trim($_POST['pass'])));

新的等效代码应该是:

preg_match('/'.$user.$pass.'/', preg_replace('/\s/', '', trim($_POST['user']).trim($_POST['pass'])));

请注意第一个参数中缺少{,}或。^preg_match()

于 2020-06-22T18:47:50.837 回答