PHP усекает хешированный пароль при извлечении из базы данных
В настоящее время у меня возникают некоторые проблемы с настройкой системы входа в систему, и я думаю, что нашел причину, почему, хотя я понятия не имею, почему это происходит или что конкретно вызывает это.
У меня есть хешированный пароль, хранящийся в базе данных. Значение password
столбец:
18e2acd33fd3ec752c344b463d00238e35b6b77ed65941f69b9eb96471834f1e507d846071768548f8cf125d6c74ce614d477a576657983bb8620bbc49eed7de
Теперь, когда я просто выберу и напечатаю это поле в PHP, вот так:
$query = "SELECT password FROM webusers WHERE username = 'Roy'";
$update = odbc_exec($connect, $query);
$row = odbc_fetch_array($update);
print $row['PASSWORD'];
Это выводит:
18e2acd33fd3ec752c344b463d00238e35b6b77ed65941f69b9eb96471834f1e507d846071768548f8cf125d6c74ce614d477a576657983bb8620bbc49eed7d
Прокрутите до самого конца обоих хэшей, и вы увидите, что во втором хэше отсутствует окончательное 'e', и это отбрасывает всю мою систему входа в систему. Почему это происходит? Я не уверен, виноват ли PHP или SQL.
Я использую PHP 5.4.7, а база данных представляет собой сервер 4D SQL, подключенный через ODBC.
Изменить: тип данных password
является Text
который, согласно руководству 4D, может содержать до 2 ГБ данных, поэтому размер столбца не является проблемой.
1 ответ
Чтобы определить, связана ли ваша проблема с MySQL или PHP, войдите в MySQL напрямую и определите, можете ли вы получить полное значение при непосредственном выполнении команды SQL. Я бы использовал тот же SQL-запрос, который использует PHP, чтобы вы видели тот же вывод из системы MySQL, что и ваше приложение. Если вы видите усеченное значение, когда находитесь в MySQL (PHP больше не является частью рисунка), то вы наверняка знаете, что вы превысили ограничения символов поля, которое вы определили в MySQL. Точно так же, если строка отображается идеально, тогда PHP должен усекать значение.
Если PHP усекает значение, то это может быть ограничение объекта mysql_result или системное ограничение PHP, что представляется менее вероятным. При дальнейшем сужении места возникновения проблемы ваш ответ станет ясным.
Я никогда не видел, чтобы PHP урезал строку. Я сохранил как минимум один мегабайт данных в одном строковом значении при создании заголовков вложений для электронных писем. Я не верю, что ваше ограничение заключается в родном языке PHP.