Bir e-posta teyidi üreten onay kodu

3 Cevap php

PHP kullanarak, bir DB saklanabilir ve e-posta onay için kullanılacak rastgele bir onay kodu oluşturmak için bazı yolları nelerdir? Ben bana yaşam için bir kullanıcının profilinden oluşturulabilir benzersiz bir numara oluşturmak için bir yol düşünemiyorum. Ben URL dahil edilmesi için yeterli sayı küçük yapmak için bir işlev kullanabilirsiniz yolu (see this link). Kullanıcı / hesabını "/ activate onaylamak" için linke tıklamanız vardır, unutmayın. Ben numaralarını kullanamazsınız, ben harfleri ve rakamları kullanarak herhangi bir sorun var.

Bunu dedi, ben rastgele kod üretmek için bir "tuz" ile adı birlikte karma denedim. Ben daha iyi bir yol olması olduğunu biliyorum, bu yüzden onu dinleyelim.

3 Cevap

$random_hash = md5(uniqid(rand(), true));

İşte 32 alfanümerik karakter uzunluğunda ve benzersiz olacaktır. Eğer daha kısa olmak istiyorsanız sadece substr () kullanın:

$random_hash = substr(md5(uniqid(rand(), true)), 16, 16); // 16 characters long

1) Veritabanı bir Aktif alan oluşturma

2) Kayıt olduktan sonra e-posta gönderilir

3) Create a Link to include in Email,Use a Unique identifier It would look something like this

Kayıt için karşılama Username Teşekkürler.

Hesabınızı etkinleştirmek için aşağıdaki linke tıklayınız

domain.com/register.php?uid=100&activate=1

4) true Aktif alanı güncelleştirme

alt text

$email_encrypt = urlencode($email);
$special_string = 'maybeyourcompanynamereversed?';
$hash = md5($email_encrypt.$special_string);

Here is the link that is sent to the email that was provided:

http://yourdoman.com/confirm.php?hash='.$hash.'

The actual link will look something like this:

http://yourdomain.com/confirm.php?hash=00413297cc003c03d0f1ffe1cc8445f8

Karar verdim biraz daha güçlü bir şey ve ekledi işlevselliği gerekir. Yani bu ben ile geldi budur.

/**
 * Hash Gen 
 * @author Kyle Coots
 * @version    1.0
 * Allow you to create a unique hash with a maximum value of 32.
 * Hash Gen uses phps substr, md5, uniqid, and rand to generate a unique 
 * id or hash and allow you to have some added functionality.
 * 
 * @see subtr()
 * @see md5()
 * @see uniqid()
 * @see rand()
 *  
 * You can also supply a hash to be prefixed or appened
 * to the hash. hash[optional] is by default appened to the hash 
 * unless the param prefix[optional] is set to prefix[true].     
 * 
 * @param start[optional]
 * @param end[optional]
 * @param hash[optional]
 * @param prefix bool[optional]
 * 
 * @return string a unique string max[32] character
 */
function hash_gen($start = null, $end = 0, $hash = FALSE, $prefix = FALSE){

    // start IS set NO hash
    if( isset($start, $end) && ($hash == FALSE) ){

        $md_hash = substr(md5(uniqid(rand(), true)), $start, $end);
        $new_hash = $md_hash;

    }else //start IS set WITH hash NOT prefixing
    if( isset($start, $end) && ($hash != FALSE) && ($prefix == FALSE) ){

        $md_hash = substr(md5(uniqid(rand(), true)), $start, $end);
        $new_hash = $md_hash.$hash;

    }else //start NOT set WITH hash NOT prefixing 
    if( !isset($start, $end) && ($hash != FALSE) && ($prefix == FALSE) ){

        $md_hash = md5(uniqid(rand(), true));
        $new_hash = $md_hash.$hash;

    }else //start IS set WITH hash IS prefixing 
    if( isset($start, $end) && ($hash != FALSE) && ($prefix == TRUE) ){

        $md_hash = substr(md5(uniqid(rand(), true)), $start, $end);
        $new_hash = $hash.$md_hash;

    }else //start NOT set WITH hash IS prefixing
    if( !isset($start, $end) && ($hash != FALSE) && ($prefix == TRUE) ){

        $md_hash = md5(uniqid(rand(), true));
        $new_hash = $hash.$md_hash;

    }else{

        $new_hash = md5(uniqid(rand(), true));

    }

    return $new_hash;

 }