【问题标题】:Can I extract customer name from a serial number?我可以从序列号中提取客户名称吗?
【发布时间】:2016-10-31 00:56:57
【问题描述】:

我正在尝试使用客户名称生成某种序列号。 这是针对我正在开发的 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();
}
?>

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

【问题讨论】:

标签: php numbers unique generator


【解决方案1】:

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

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

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

【讨论】:

  • +1 对此答案。最好生成一个随机序列码,将其与客户信息一起保存到数据库中,然后可以轻松查找。
  • 会的,只是在某些情况下,软件可能无法连接到互联网。因此,解码序列号将验证序列号是在购买后在我的网站上生成的。
【解决方案2】:

您拥有$hash = strtoupper(md5($token)) 的事实应该表明这是一个不可逆的变换。如果您想将哈希用作查找键,则需要存储原始数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多