如何用PHP在30分钟后制作令牌

时间:2017-06-04 06:53:12

标签: php token

我有一个制作令牌的功能但是当刷新页面功能创建一个新的字符串时我想在30分钟后用这个函数创建一个字符串。

function token($length=6){
    $character = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $randomstring = "";
    $num_valid_chars = strlen($character);
    for ($i = 0; $i < $length; $i++)
    {
        $random_pick = mt_rand(1, $num_valid_chars);
        $random_char = $character[$random_pick-1];
        $randomstring .= $random_char;
    }
    return $randomstring;
}

1 个答案:

答案 0 :(得分:1)

您可以将代码存储在 Cookie 中,该代码会在 30分钟后过期。您可以检查 cookie 是否具有值,然后从cookie中获取它,否则创建新令牌。

<?php
function token($length=6){
    $cookie_name = "token_set";
    if(isset($_COOKIE[$cookie_name]) && $_COOKIE[$cookie_name] != "") {
        $randomstring = $_COOKIE[$cookie_name];
    }
    else
    {
        $character = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $randomstring = "";
        $num_valid_chars = strlen($character);
        for ($i = 0; $i < $length; $i++)
        {
            $random_pick = mt_rand(1, $num_valid_chars);
            $random_char = $character[$random_pick-1];
            $randomstring .= $random_char;
        }   

        setcookie($cookie_name, $randomstring, time() + (1800), '/');   //set for 30 mins
    }


    return $randomstring;
}