我目前有一些麻煩,讓登錄系統工作,我相信我找到了原因,雖然我不知道爲什麼發生或具體造成它。從數據庫檢索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,數據庫是通過ODBC連接的4D SQL服務器。
編輯:的password
的數據類型是Text
其中,根據4D手冊,可容納多達2GB的數據,以便列大小不是問題。
數據庫中'password'字段的數據類型是什麼?當您直接在數據庫中查看密碼字段(通過PHPMyAdmin或其他工具)時,您是否看到最後一個e? – MatthewMcGovern 2013-04-29 15:10:55
在db中增加這個字段的長度 – 2013-04-29 15:12:24
@MatthewMcGovern是的,當我在4D中查看數據庫字段時,我確實看到了最後的e。字段類型是「文本」。 – Roy 2013-04-29 15:13:11