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.

Другие вопросы по тегам