PHP中的相同字符串不匹配

时间:2015-06-29 14:01:24

标签: php regex string string-comparison

我正在尝试比较两个字符串(一个来自我的数据库,另一个来自用户提供)并查看它们是否匹配!我遇到的问题是它们似乎不匹配 - 即使字符串似乎完全相同?

我的PHP代码如下:

public function Verify($pdo, $id, $token) {
    $prepsql = $pdo->prepare("SELECT * FROM Profiles WHERE id = '$id' LIMIT 1");
    $prepsql->execute();
    $currentrow = $prepsql->fetch();
    $current = preg_replace("/[^a-zA-Z0-9]+/", "", $currentrow["token"]);
    echo '<p>'.var_dump($current).'</p>';
    echo '<p>'.var_dump($token).'</p>';
    $token = preg_replace("/[^a-zA-Z0-9]+/", "", $token);
    if ($current == null || $current = "") {
        return false;
    } else {
        if (strcmp($token, $current) == 0) {
            return true;
        } else {
            return false;
        }
    }
}

这是网页输出:

  string(244) "CAAW4HRuZBuB4BACA7GffOAwLHgmLgMMLGQxDAw8IJDCwahZAh0S4wZAcP8Q9DmMwsDpBq7jFcH1EzUIsZBbhKov12utoYFQns0HhgB5xKLeDqtZBRqavaNjNSn7KAcObZAEcavQCRbGlVKZBArfDEHskBSR8qAoU543DVTZCOyHm5oYNDVafwHl0bAkc4jyIhh2YHEPaNpWGC0FhezsSidOgLjnfFq8CeLVxHH0nUZBMLgAZDZD"
<p></p>string(244) "CAAW4HRuZBuB4BACA7GffOAwLHgmLgMMLGQxDAw8IJDCwahZAh0S4wZAcP8Q9DmMwsDpBq7jFcH1EzUIsZBbhKov12utoYFQns0HhgB5xKLeDqtZBRqavaNjNSn7KAcObZAEcavQCRbGlVKZBArfDEHskBSR8qAoU543DVTZCOyHm5oYNDVafwHl0bAkc4jyIhh2YHEPaNpWGC0FhezsSidOgLjnfFq8CeLVxHH0nUZBMLgAZDZD"
<p></p><p>Not authenticated</p>

未经过身份验证只是意味着此函数返回false ...

我到底在做什么?根据其他类似Stack Overflow答案给出的建议,我使用正则表达式函数基本上只保留字母数字字符,但这没有任何区别?这不是一个修剪问题,因为这不起作用!

非常感谢任何帮助!

谢谢!

1 个答案:

答案 0 :(得分:5)

这是你的问题:

if ($current == null || $current = "") {
//                               ^ now `$current` is "", an empty string

您为$current分配一个新值,一个空字符串。

您可能需要以下内容:

if ($current == null || $current == "") {
//                               ^^ now you are comparing