Идентичные строки в PHP не совпадают [дубликат]


На этот вопрос уже есть ответ здесь:

Я пытаюсь сравнить две строки (одну из моей базы данных и другую, предоставленную пользователем) и посмотреть, совпадают ли они! Проблема, с которой я сталкиваюсь, заключается в том, что они, похоже, не совпадают, хотя строки, похоже, точно идентичные?

Мой 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...

Что, черт возьми, я делаю не так? В соответствии с рекомендациями, приведенными в других подобных ответах на переполнение стека, я использовал функцию регулярного выражения, чтобы в основном сохранять только буквенно-цифровые символы, но это не имело никакого значения? Это также не проблема обрезки, так как это не сработало!

Любая помощь была бы очень кстати ценю!

Спасибо!

Author: Imran Ahmed, 2015-06-29

1 answers

Вот в чем ваша проблема:

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

Вы присваиваете новое значение $current, пустой строке.

Вы, вероятно, хотите что-то вроде:

if ($current == null || $current == "") {
//                               ^^ now you are comparing
 5
Author: jeroen, 2015-06-29 14:05:24