Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    4

    [MYSQL] Login: dov'è finita la password?

    Il problema è il seguente:
    estraendo da una tabella utente e/o password(criptata con la funzione 'password' appunto) non ottengo nessun risultato.
    Il 'problema' in questione si verifica usando mysql 4.1.8-nt(versione per win) e phpMyAdmin 2.6.0 pl3.

    Le operazioni ke ho eseguito dopo la creazione della tabella sono:
    - inserimento utente='pippo' e pass=password('pippopass')
    - estrazione utente select ... where utente='pippo' and pass=password('pippopass')

    Cosa succede?nella versione di mysql precedente (nn m ricordo quale di preciso) non mi dava questo tipo di problema, inoltre ho notato ke nella nuova versione ke utilizzo c'è la presenza di 'collation' tra le proprietà delle tabelle, centra qualcosa x caso?

    Spero possiate illuminarmi,
    Grazie
    -COTLOD

  2. #2
    La collation c'entra se e' diversa tra connessione e dati nel db sicuramente... ma ti dara' un errore specifico.

    Il problema password potrebbe derivare (senz'altro) dal fatto che password() precedente criptava a 16 digit. Il password() di 4.1.* cripta a 40 digit. Embe'?? dirai. Embe... il problema e' che password() del client mysql 3.fischia_qualcosa... utilizza password() vecchia a 16 digit. Embe? dirai.

    E allora usa MD5() per le tue password. per le password di sistema invece le devi memorizzare con old_password() (da linea di comando) perche' queste vengono automaticamente hashate dal client a 16 digit e non c'e santo che tenga.

    Tutto ok invece con i client mysql 5.fischia_pure_qui.

    Morale della favola password() ha un formato diverso a seconda della versione del client e del server mysql utilizzati....

    Se hai capito poco non ti preoccupare... io anche.



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    25
    La soluzione non sembra essere quella giusta.
    Bisogna tener conto ke comunque la mia tabella di login la creo ex-novo con il mysql recente(4.1) e non ho interazioni con la versione precedente.
    Cmq sia anke con md5 mi da lo stesso risultato...cioè nulla, ho provato da linea di comando ma è lo stesso(magari era phpmyadmin ke faceva le bizze...).
    Se può essere d'aiuto quando vedo l'output della sintassi della query mi evidenzia la parola del comando (sia 'password' ke 'md5') in rosso.
    Continuo ad annaspare e la cosa mi pare strana, non mi è mai capitata una cosa così strana...

    Aiuto!
    Grazie x l'eventuale collaborazione.

    -COTLOD
    By COTLOD

  4. #4
    Guarda che l'interazione del client e' data dalla versione di php e non da quella di mysql. Posta una di queste query... e la struttura della tabella. tanto per provare anche su un altro pc.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    4
    CREATE TABLE `login` (
    `user` varchar(20) NOT NULL default '',
    `pass` varchar(20) NOT NULL default '',
    PRIMARY KEY (`user`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

    --
    -- Dump dei dati per la tabella `login`
    --

    INSERT INTO `login` VALUES ('paolo', '969044ea4df948fb0392');

    La tabella è stata creata così. l'unico dato inserito, x la prova, è il mio nome con password 'paolo' usando la funzione 'password'.(ho semplicemente esportato la tabella e riportato il codice del file .sql)


    SELECT *
    FROM `login`
    WHERE pass = password( 'paolo' )
    LIMIT 0 , 30

    Questa invece è la query di interrogazione ke da risultato 'vuoto'(la parola password viene evidenziata di rosso ma la query ha esito positivo).

    Tutte le operazioni sopra elencate le eseguo con phpMyAdmin 2.6 su un server mysql 4.1.8 nt(x win).

    Errori di sintassi non me ne da, funge tutto, solo non mi restituisce alcun risultato quando estraggo la password.

    Se ricreo la tabella e il dato manualmente sulla precedente versione di mysql 4.0.8 e utilizzando phpmyadmin 2.5.6(presenti su un altro pc) non ci sono problemi e il dato viene estratto correttamente;
    se invece importo il codice sql(omettendo "DEFAULT CHARSET=latin1" ke non è supportato) la magagna ricompare...
    Non capisco se sbaglio e/o cosa sbaglio visto ke a questo punto non è un problema di diversità di versioni dei software.

    Spero di essere stato preciso.
    Grazie
    -COTLOD

  6. #6
    Vedi che non hai letto con la dovuta attenzione il mio post iniziale.

    Hai un campo pass VARCHAR(20) quando il la funzione password() di mysql 4.1 crea un hash di 40 digit. E chiaro che non troverai mai la corrispondenza perche' l'hash inserito ti viene troncato a 20 digit, mentre tu proponi per la ricerca uno di 40. Il suggerimento di usare MD5() era per avere uno standard de facto tra mysql 4.0 e 4.1 per le password non di sistema mysql (ovviamente).

    Prima creava un hash a 16 digit che in VARCHR(20) ci stavano comodi. Il campo deve essere VARCHAR(40) per password() oppure VARCHAR(32) per MD5().



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    4
    Mi sa ke avevi proprio ragione.
    Per la precisione settando il campo pass a varchar40 con md5 funge, con password devo arrivare a 42, cmq hai centrato.
    Ti ringrazio per l'aiuto.

    Un'ultima cosa, per prevenire questo tipo di errori, come faccio a sapere installando una nuova versione di mysql quali comandi vengono 'aggiornati' e come?ke file devo spulciare?c'è qualche sezione ke viene messa in rilievo in qualche documento?o bisogna semplicemente sbatterci la testa?

    Grazie x l'aiuto.
    -COTLOD

  8. #8
    [supersaibal]Originariamente inviato da coltod
    Un'ultima cosa, per prevenire questo tipo di errori, come faccio a sapere installando una nuova versione di mysql quali comandi vengono 'aggiornati' e come?ke file devo spulciare?c'è qualche sezione ke viene messa in rilievo in qualche documento?o bisogna semplicemente sbatterci la testa?
    [/supersaibal]
    La documentazione e' buona....

    http://dev.mysql.com/doc/mysql/en/News-4.1.x.html


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    4
    Grazie ancora.

    Ciaoooooo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.