我可以从序列号中提取客户名称吗?

时间:2016-06-28 15:38:15

标签: php numbers unique generator

我正在尝试使用客户名称生成某种序列号。 这是我正在开发的PHP软件。但我从来没有做过试用系统和连续生成等等。

这是我用来生成序列号的代码:

<?php
// URL is = http://teionsoft.com/classified/keygen.php?token=
    $token = @$_POST['token'];

    if(empty($token)) 
    { 
        echo '
        <p>Token can not be blank or zero.</p>
        <p>
            <form action="keygen.php" method="post">
                <input type="text" name="token" id="token" placeholder="Type in your full name" /><br /><br />
                <input type="submit" name="submit" value="Get serial!" />
            </form>
        </p>';
        exit;
    }

function serialKey() { 
    // Create a token

    // GUID is 128-bit hex
    $hash = strtoupper(md5($token));

    // Create formatted GUID
    $guid = '';

    // GUID format is XXXXX-XXXXX-XXXXX-XXXXX-XXXXX for readability    
    $guid .= substr($hash,  0,  5) . 
         '-' .
         substr($hash,  8,  5) .
         '-' .
         substr($hash, 12,  5) .
         '-' .
         substr($hash, 16,  5) .
         '-' .
         substr($hash, 20, 5);

    // temporary code to test base64 codeing / decoding ;

    $string  = $guid;
    $encoded = base64_encode($string);
    $decoded = base64_decode($encoded);
    echo $encoded ."<br /><br />";
    echo $decoded;
}

if(isset($_POST['submit']))
{
    serialKey();
}
?>

如何从序列号中提取客户名称?

2 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您需要根据客户名称生成序列号,然后才能解码序列号以获取客户名称。

您可以将名称转换为十六进制,但在大多数情况下,字符串会比您现在使用的XXXXX-XXXXX-XXXXX-XXXXX-XXXXX格式更长。

将序列号保存在数据库中是不是更好,所以您只需检查序列号是否与客户名称在同一行?

答案 1 :(得分:0)

你有$hash = strtoupper(md5($token))这一事实应该是一个不可逆转的转变的线索。如果要将哈希用作查找键,则需要存储原始文件。