Два значения массива PHP выглядят одинаково, но показывают разные

0

У меня есть следующий код:

$userPass = $invItem['cfields'][8]['pw']; //Value provided from a form
$sqlPass = $row['user_pass'];     //Value from SQL
echo "Pass: <pre>", $userPass, "</pre><br />";
echo "SQL Pass: <pre>", $sqlPass, "</pre><br />";

userPass - это значение из формы входа, это вложенный массив. Существует множество массивов разных размеров, вложенных друг в друга. sqlPass является результатом SQL-запроса, содержащего сохраненный пароль, с которого я пытаюсь пройти аутентификацию.

В сценарии, который я тестирую, используется пароль с символами "p @$ S", например.

Без htmlspecialchars() оба пароля кажутся одинаковыми, но с htmlspecialchars() они выглядят следующим образом:

Pass: p@&#036;S
SQLPass: p@$S

Что я могу сделать, чтобы получить эти два значения из разных строк для правильного сравнения?

  • 1
    Переберите все символы в каждой строке и напечатайте их код ascii. Проверьте длину каждой строки.
Теги:
arrays

2 ответа

0

Я ценю помощь, оказанную мне в том, чтобы указывать на решение. Я решил решить эту проблему, используя $userPass = html_entity_decode($invItem['cfields'][8]['pw']).

0

Ваш вывод выглядит одинаково для меня... но потом я старею :)

Ваша строка $sqlPass = htmlspecialchars('trim', $row['user_pass']); неверно, поэтому $sqlPass имеет неправильное значение после использования htmlspecialchars. Так как вы все равно вытаскиваете его из БД, в этом случае не нужно будет повторно использовать htmlspecialchars. Проблема с вашей строкой заключается в использовании строки "обрезка" и интерпретации второй переменной как int.

  • 0
    Это была ошибка копирования и вставки, «обрезки» на самом деле не было. Два массива по-прежнему выглядят одинаково, но не будут сравниваться и отображаться по-разному при использовании htmlspecialchars () или MD5 ().
  • 0
    Итак, используя один и тот же код для отображения двух переменных, добавьте блок <pre> </ pre> вокруг эха. Таким образом, вы сможете увидеть точные строки и, надеюсь, определить, где что идет не так. Но, тем не менее, вам, вероятно, не следует снова использовать htmlspecialchars для строки, которую вы извлекли из базы данных, при условии, что вы использовали ее перед сохранением пароля в базе данных.
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню