ホームページ > バックエンド開発 > PHPチュートリアル > ユーザー招待コードの生成方法

ユーザー招待コードの生成方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-07-28 08:26:54
オリジナル
2200 人が閲覧しました

最近、現在の会社の都合により、就職活動を再開することになりました。面接の過程で、いくつかの興味深い質問にも遭遇しました。その時は何も考えていなかったのかもしれませんが、帰ってきてから改めて考えてみました。質問 1: ユーザーの ID (ID は長整数) を指定して、そのユーザー ID に基づいてユーザーの一意の招待コードを生成します (招待コードの範囲 ([a-z0-9])? コードの実装!

いくつかのこと当時私が考えていた解決策は比較的単純です:

<?php
    function createCode($userId)
    {
        //方案一:
        $currentTime = time();
        $code = "{$userId}{$currentTime}";
        return $code;

        //方案二:

        while(true){
            //获取一个随机字符串
            $code = getRandString(8);
            //判断该字符串是否存在
            if( ! checkExists($code))
                return $code;
        }
    }
ログイン後にコピー

その時に思いついたいくつかの解決策は、ほとんどすべてこれら 2 つの解決策から発展したものでした

2 つの解決策の欠点:

オプション 1:文字列の長さが長すぎて、招待コードはすべてユーザー間で渡される必要があります。長すぎるとユーザーの記憶に役立ちません。

オプション 2: ランダムな文字列を生成するたびに、次のことを確認する必要があります。データベース内に既に存在します。サイズが大きいと、必然的に効率に影響を及ぼします。このソリューションは最適ではありません。

文字 a ~ z0 ~ 9 を直接考慮することができます。ユーザー ID を 16 進数に変換してみてはどうでしょうか?

コードの実装:

<?php
function createCode($userId)
{
    static $sourceString = [
              0,1,2,3,4,5,6,7,8,9,10,
              'a','b','c','d','e','f',
              'g','h','i','j','k','l',
              'm','n','o','p','q','r',
              's','t','u','v','w','x',
              'y','z'
            ];

    $num = $userId;
    $code = '';
    while($num)
    {
        $mod = $num % 36;
        $num = (int)($num / 36);
        $code = "{$sourceString[$mod]}{$code}";
    }
    
    //判断code的长度
    if( empty($code[4]))
        str_pad($code,5,'0',STR_PAD_LEFT);

    return $code;
}
ログイン後にコピー

最初の 2 つのソリューションと比較すると、この新しいソリューションは、同じユーザーが招待コードを繰り返し生成できるようにしながら、最初の 2 つのソリューションの欠点を補います。もちろん、この実装方法は、特定のニーズに基づいて異なる方法で処理する必要があります。
上記は、ユーザー招待コードを生成する方法を、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人の役に立てば幸いです。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート