У меня есть следующий код:
$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@$S
SQLPass: p@$S
Что я могу сделать, чтобы получить эти два значения из разных строк для правильного сравнения?
Я ценю помощь, оказанную мне в том, чтобы указывать на решение. Я решил решить эту проблему, используя $userPass = html_entity_decode($invItem['cfields'][8]['pw'])
.
Ваш вывод выглядит одинаково для меня... но потом я старею :)
Ваша строка $sqlPass = htmlspecialchars('trim', $row['user_pass']);
неверно, поэтому $sqlPass
имеет неправильное значение после использования htmlspecialchars
. Так как вы все равно вытаскиваете его из БД, в этом случае не нужно будет повторно использовать htmlspecialchars. Проблема с вашей строкой заключается в использовании строки "обрезка" и интерпретации второй переменной как int.