Πώς είναι δυνατόν να δημιουργηθεί μια τυχαία, μοναδική συμβολοσειρά με αριθμούς και γράμματα για χρήση σε έναν σύνδεσμο επαλήθευσης; Όπως όταν δημιουργείτε έναν λογαριασμό σε έναν ιστότοπο και σας στέλνει ένα email με έναν σύνδεσμο και πρέπει να κάνετε κλικ σε αυτόν τον σύνδεσμο για να επαληθεύσετε τον λογαριασμό σας... ναι... ένα από αυτά.
Πώς μπορώ να δημιουργήσω ένα από αυτά χρησιμοποιώντας PHP;
Ενημέρωση: Μόλις θυμήθηκα το uniqid()
. Είναι μια συνάρτηση PHP που παράγει ένα μοναδικό αναγνωριστικό με βάση την τρέχουσα ώρα σε μικροδευτερόλεπτα. Νομίζω ότι θα το χρησιμοποιήσω.
Ειδοποίηση ασφαλείας: Αυτή η λύση δεν πρέπει να χρησιμοποιείται σε περιπτώσεις όπου η ποιότητα της τυχαιότητας μπορεί να επηρεάσει την ασφάλεια μιας εφαρμογής. Ειδικότερα, οι γεννήτριες τυχαίων αριθμών
rand()
καιuniqid()
δεν είναι κρυπτογραφικά ασφαλείς. Δείτε την απάντηση του Scott's για μια ασφαλή εναλλακτική λύση.
Εάν δεν χρειάζεται να είναι απολύτως μοναδικός με την πάροδο του χρόνου:
md5(uniqid(rand(), true))
Διαφορετικά (δεδομένου ότι έχετε ήδη καθορίσει ένα μοναδικό login για τον χρήστη σας):
md5(uniqid($your_user_login, true))
Αυτή η λειτουργία θα δημιουργήσει ένα τυχαίο κλειδί χρησιμοποιώντας αριθμούς και γράμματα:
function random_string($length) {
$key = '';
$keys = array_merge(range(0, 9), range('a', 'z'));
for ($i = 0; $i < $length; $i++) {
$key .= $keys[array_rand($keys)];
}
return $key;
}
echo random_string(50);
Παράδειγμα εξόδου:
zsd16xzv3jsytnp87tk7ygv73k8zmr0ekh6ly7mxaeyeh46oe8
π.χ. (σε ψευδοκώδικα)
int myInt = random(0, numcharacters)
char[] codealphabet = 'ABCDEF12345'
char random = codealphabet[i]
repeat until long enough