Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Chiave di registrazione ed eventuali duplicati

    Salve a tutti


    sto realizzando una registrazione utente con convalida attraverso un link ricevuto via email. Ho realizzato una funzione in PHP che genera una stringa di 50 lettere pseudocasuali, che dovrebbe identificare un dato utente in fase di click sul link di convalida ricevuto via mail.

    Ora nel DB io ho creato il campo regkey di tipo VARCHAR (50). Premettendo che un eventuale doppione è un caso davvero rarissimo, potrebbe capitare che due utenti in fase di attesa di convalida abbiano la stessa regkey, e quindi, come potrei evitare questa ambiguità?
    Al momento dichiarare semplicemente UNIQUE tale campo non mi sarebbe molto d'aiuto (se un utente cercasse di registrarsi con una chiave già presente nel db la registrazione fallirebbe e dovrebbe rifare la registrazione), quindi cosa mi consigliate di fare?

    Ho pensato anche a mettere come chiave di registrazione l'id di sessione, ma non so se ci possa essere un impatto negativo sulla sicurezza, non so nemmeno come tale id di sessione venga generato (un auto increment?)

    Premetto che sono alle prime armi di queste cose e quindi gradirei una spiegazione soddisfacente.

    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Avere una tabella che registra i regkey. Quando generi una chiave controlli che non esiste nella tabella. Se c'è ne generi un' altra, etc.. Se non c'è la inserisci nella tabella e la assegni.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Non è una gran soluzione, nel caso generale, giacchè bisognerebbe bloccare la concorrenza durante queste operazioni, cioèSET autocommit=0;
    set session transaction isolation level serializable;
    start transaction with consistent snapshot;
    ...
    fai
    ...
    commit;

    in realtà fai molto prima con uuid e "buonanotte"

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.