Ciao Ragazzi,
Qual é il miglior modo di creare una random key da 32 caratteri?
In pratica vorrei creare un link per un acesso temporaneo ad un helpdesk, così il cliente accede al ticket senza fare il login.
![]()
Ciao Ragazzi,
Qual é il miglior modo di creare una random key da 32 caratteri?
In pratica vorrei creare un link per un acesso temporaneo ad un helpdesk, così il cliente accede al ticket senza fare il login.
![]()
Grazie AlhazredOriginariamente inviato da Alhazred
md5(time())
Io avevo pensato a questo:
substr(md5(rand()), 0, 32);
però uso il tuo suggerimento.
Usando la funzione TIME non ci saranno neanche valori duplicati...
![]()
Usando la funzione TIME se 2 record sono inseriti nello stesso momento ci potrà essere una duplicità, invece con microtime questo non avviene, (se ho capito bene da qualche ricerca fattaOriginariamente inviato da cris.calleo
Grazie Alhazred
Io avevo pensato a questo:
substr(md5(rand()), 0, 32);
![]()
md5(microtime());
Si hai capito bene, microsecond() lavora sui microsecondi, time() sui secondi, quindi è molto meno probabile la contemporaneità con microsecond().
Applicare substr() come hai scritto nell'altro post non serve, md5() tira fuori sempre stringhe da 32 caratteri.
meno probabile ma non impossibile....valuta se fare un controllo duplicati o aggiungere una key2?
If you think your users are idiots, only idiots will use it. DropBox
dovresti proteggerti dai duplicati a prescindere dall'argomento che passi ad md5sum
le collisioni, seppur poco probabili, sono sempre dietro l'angolo, e 32 bit sono relativamente pochi.
una volta generata la nuova chiave valuterei il tempo necessario per controllare se non sia già stata generata...
Non dobbiamo trascurare la probabilità che il costante inculcare la credenza in Dio nelle menti dei bambini possa produrre un effetto così forte e duraturo sui loro cervelli non ancora completamente sviluppati, da diventare per loro tanto difficile sbarazzarsene, quanto per una scimmia disfarsi della sua istintiva paura o ripugnanza del serpente.
Avete ragione, penso che una key2 risolve il problema in modo definitivo.
Per realizzare l'acesso utilizzo una query del genere.
Quindi dovrei aggiungere un AND key2='$key2'.
$result = mysql_query("SELECT * FROM tickets
... ... ... WHERE key='$key'",$con);
Per evitare un altra stringa di 32 caratteri, che ne dite se utilizzo uniqid(); per la Key2???
Grazie a voi per il prezioso consiglio!!![]()