Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746

    [php-mysql] controllo univocità username

    per controllare l'univocità dello username scelto da un utente per l'iscrizione ad una sezione con login, ho pensato
    a questi due script, quale mi consigliate di usare ?
    oppure sapete se conviene farlo in qualche altro modo?

    Codice PHP:
    // controllo univocità username 1
    $control_ursnm "
    SELECT usrnm
    FROM staff
    WHERE usrnm = '
    $usrnm'
    "
    ;
    if (
    mysql_query($control_ursnm,$connessione_db) or die("Errore alla linea ".__LINE__.": ".mysql_error())) {
    $messaggio "
    username già utilizzato"
    ;
    }


    // controllo univocità username 2
    $control_ursnm =  mysql_query("
    SELECT COUNT(*) AS totale
    FROM staff
    WHERE usrnm = '
    $usrnm'
    "
    ,$connessione_db) or die("Errore alla linea ".__LINE__.": ".mysql_error())) {
    $conteggio mysql_fetch_array($control_ursnm);
    if ( 
    $conteggio['totale'] > ) {
    $messaggio "
    username già utilizzato"
    ;

    grazie
    Errare humanum est, perseverare ovest

  2. #2
    Personalmente utilizzo sempre count() ma non con un controllo generico num > 0. Se e' univoco dara' == 1.

    Quindi se num == 0 inserisci, altrimenti ciccia.


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

  3. #3
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    ok, grazie
    Errare humanum est, perseverare ovest

  4. #4
    anch'io come piero utilizzo il count ... ma dal punto di vista della velocità di esecuzione non cambia nulla ... è vero che deve "contare" ... ma deve contare un solo elemento, se c'è, di una tupla ... quindi ... nn c'è peso aggiuntivo

    PS: se la tabella è parecchio grande metti come indice il campo username ... magari mettilo come chive unica ^^
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #5
    Chiave unica lo davo per scontato. Infatti il controllo servirebbe proprio per prevenire il warning in caso di doppione.

    Poi anche per il principio di non estrarre mai dati sensibili se si puo' evitare. A volte vedi certi script che estraggono username e password e poi li comparano in una if.... da manicomio...


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

  6. #6
    [supersaibal]Originariamente inviato da piero.mac
    Chiave unica lo davo per scontato. Infatti il controllo servirebbe proprio per prevenire il warning in caso di doppione.

    Poi anche per il principio di non estrarre mai dati sensibili se si puo' evitare. A volte vedi certi script che estraggono username e password e poi li comparano in una if.... da manicomio...

    [/supersaibal]
    lo so che può sembrare ot questo post ma non lo è ... almeno chi legge sa cosa NON deve fare

    ci sono anche script che tirano fuori l'username e confrontano la password o altri script che tirano fuori l'username e confrontano la password decrittandola

    ora ... per questioni di sicurezza ... si dovrebbe evitare di tirar fuori la password dal db ... ma questo non è sempre possibile evitarlo ... però è sicuramente SEMPRE possibile evitare di decrittare la password (se invece di hashiarla la si critta) per confrontarla con la password in chiaro!
    E' sempre meglio crittare la password ricevuta e compararla direttamente nella query o, al max, tirar fuori la password e poi confrontare le pass crittate ^^
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    ottimo!
    Errare humanum est, perseverare ovest

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.