2012-07-18 30 views
8

Bir oturum açma sistemi kurmaya çalışıyorum ama bir sorunu çözemiyorum: PHP bana md5();PHP md5() farklı çıktı verir MySQL md5

$password = md5("brickmasterj"); 
return $password; 

İade:

3aa7b18f304e2e2a088cfd197351cfa8 

Fakat MySQL eşdeğer bana daha kısa bir versiyonunu verir: PHP'de MySQL ... Örneğin

, daha

3aa7b18f304e2e2a08 

neler var sorun? Ve parolaları kontrol ederken bununla nasıl çalışırım?

+0

sen/güncelleme takmadan veya MySQL'ın MD5 çıkışını seçerek Are kullanarak php kullanarak çağırabilirsiniz mysql tabloda gitmeli? Bunun sadece 18 karakterlik bir genişliğe/boyuta sahip olan Sütununuza düştüğünü hissediyorum. – Gavin

cevap

8

Ben şifre alanın uzunluğunu ayarlamak için tablonun sütun uzunluğu sorununu, tahmin etmek en az 32

+0

doğru, mysql değerinin php tarafından oluşturulan dizenin başlangıcı olduğunu ve ayrıca 18 karakter uzunluğunda olduğunu görebiliyorsunuz :) – mishu

+0

Teşekkürler, sorun, sütun uzunluğu üzerinde bir maksimum vardı. – Jers

2

basit bir sorgu yapsaydı MySQL < 32 bandında bir uzunlukta döndürür Hiçbir şekilde SELECT md5('brickmasterj') gibi, göreceksin. Şimdi büyük olasılıkla değeri yeterince geniş olmayan bir sütuna ekliyorsunuz.

2

Veritabanı alanınız 32 karakter uzunluğunda mı? Mysql'in md5'i kullanarak veritabanına yazıyor musunuz?

+0

Teşekkürler, sorun buydu, sütun uzunluğu maksimum oldu:> -1 .... teşekkürler! sen çok profesyonelsin – kinaesthesia

0

Her zaman sabitse karma boyutu. Sizin durumunuzda karma boyutu 128 bittir. Bir ascii dizesine dönüştürüldüğünde, yalnızca onaltılık basamak içeren bir 32 karakter dizgisi olurdu. Eğer değişken karakteri depolamak olan eğer öyleyse uzunluğu en az 32 örnek olmalıdır: password varchar(32) sonra select password from table where password =md5($password);