Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    Login: problema con lettere accentate

    Buongiorno, dopo aver creato una pagina di login ho notato che se ti registri con un username e poi cerchi di effettuare l'accesso utilizzando quell'username leggermente modificato con lettere accentate entra!
    Esempio
    registrazione avvenuta con username "caffè"
    login effettuato con username "caffe"

    quello che mi chiedo è: chi è che non riconosce le lettere accentate e le interpreta come lettere normali? il database MySQL? il php? l'html?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Scegli un charset ed usa sempre quello ovunque, il che vuol dire:
    - impostare un charset per il database e le tabelle (MySQL)
    - dichiarare in ogni pagina il charset usato (HTML)
    - dopo la creazione di un collegamento al db e prima di qualsiasi query, definire il charset usato per la connessione (PHP)

    Il charset da scegliere potrebbe ad esempio essere UTF8 che per le lettere accentate va bene.

  3. #3
    a parte
    - dopo la creazione di un collegamento al db e prima di qualsiasi query, definire il charset usato per la connessione (PHP)
    il resto è tutto già fatto, ovvero uso in tutte le pagine la codifica UTF-8 !

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Metti
    mysql_set_charset('utf8');

    dopo il mysql_selectdb(...)

  5. #5
    appena provato, ril problema persiste!
    Ho effettuato questa prova:
    -nel db ho salvato un utente con username: caffè e pass: caffè
    -provo ad effettuare il login con username: caffe e pass: caffe
    ed entra!

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Passa username e password a mysql_real_escape_string() prima di effettuare la query, ad esempio

    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);

    $query = "quello che è, usando $username e $password";

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    come fai il confronto per la verifica, inoltre?

  8. #8
    @Alhazred: ho usato la funzione che mi hai suggerito

    @eiyen: lo sto implementando, pensavo di usare la funzione levenshtein() per il confronto di 2 stringhe.. il problema è che concettualmente non ho capito bene dov'è che la lettera "e" e la lettera accentata "è" vengono considerate uguali, non sò se mi son spiegato bene! Il confronto dovrebbe avvenire subito dopo aver fatto la query? In questo caso è il db che vede le due lettere come un unica?!

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Mmmh.. nel primo post dici che se provi il login con lo username sbagliato entri lo stesso... quindi c'è già uno script che fa il controllo... come è realizzato? magari c'è un problema nell'algoritmo di verifica... addirittura parli di distanza di levenshtein, ma per un accesso con user+pw dovresti controllare la stringa così com'è... a naso sembra che "è" sia considerata come "e" proprio nella funzione che fa il confronto

  10. #10
    ehm non ti arrabbiare ma non ho fatto nessun controllo xD finora ho fatto prove senza controlli scritti! Non capisco perchè dovrebbe considerare la "e" uguale alla "è"..

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.