2012-07-18 7 views
8

Sto provando a configurare un sistema di login, ma non riesco a risolvere un problema: PHP mi sta dando un altro output con md5(); di MySQL ...PHP md5() fornisce output diverso da MySQL md5

Per esempio, in PHP:

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

Returns:

3aa7b18f304e2e2a088cfd197351cfa8 

Ma l'equivalente MySQL mi dà una versione più breve:

3aa7b18f304e2e2a08 

Qual è la problema? E come lavoro con questo mentre controllo le password?

+0

State Inserimento/aggiornamento, oppure selezionando l'uscita del MD5 MySQL? Ho la sensazione che questo sia dovuto alla tua colonna che ha una larghezza/dimensione di soli 18 caratteri. – Gavin

risposta

8

Credo che il problema della lunghezza della colonna della tabella, impostare la lunghezza del campo della password per almeno 32

+0

a destra, puoi vedere che il valore di mysql è l'inizio della stringa generata da php e anche di 18 caratteri :) – mishu

+0

Grazie, quello era il problema, c'era una lunghezza massima della colonna. – Jers

2

no MySQL restituisce di una lunghezza di < 32. Se volete fare una semplice interrogazione come SELECT md5('brickmasterj'), vedresti. Ora è molto probabile che tu inserisca il valore in una colonna che non è sufficientemente ampia.

2

Il campo del database è lungo 32 caratteri? Stai scrivendo nel database usando mysql's md5?

+0

Grazie, questo era il problema, c'era un massimo nella lunghezza della colonna => -1 .... comunque grazie! sei così professionale. – kinaesthesia

0

La dimensione dell'hash se è sempre stata riparata. Nel tuo caso la dimensione dell'hash è di 128 bit. Quando viene convertito in una stringa ascii, si tratta di una stringa di 32 caratteri che contiene solo cifre esadecimali. quindi se si memorizza il carattere variabile la lunghezza dovrebbe essere atleast 32 esempio: password varchar(32) dovrebbe andare nella tabella mysql quindi è possibile chiamare utilizzando PHP utilizzando select password from table where password =md5($password);