Идентичные строки в PHP не совпадают [дубликат]
На этот вопрос уже есть ответ здесь:
- 3 разных значения 4 ответа
Я пытаюсь сравнить две строки (одну из моей базы данных и другую, предоставленную пользователем) и посмотреть, совпадают ли они! Проблема, с которой я сталкиваюсь, заключается в том, что они, похоже, не совпадают, хотя строки, похоже, точно идентичные?
Мой 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...
Что, черт возьми, я делаю не так? В соответствии с рекомендациями, приведенными в других подобных ответах на переполнение стека, я использовал функцию регулярного выражения, чтобы в основном сохранять только буквенно-цифровые символы, но это не имело никакого значения? Это также не проблема обрезки, так как это не сработало!
Любая помощь была бы очень кстати ценю!
Спасибо!
1 answers
Вот в чем ваша проблема:
if ($current == null || $current = "") {
// ^ now `$current` is "", an empty string
Вы присваиваете новое значение $current
, пустой строке.
Вы, вероятно, хотите что-то вроде:
if ($current == null || $current == "") {
// ^^ now you are comparing