2016-06-28 91 views
0

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

如何从序列号提取客户的名字吗?

+0

使用sha256而不是md5 –

+0

为唯一的ID阅读此http://php.net/manual/es/function.uniqid.php –

+1

你提到GUID那里,但你没有生成一个GUID。查看https://en.wikipedia.org/wiki/Globally_unique_identifier#Algorithm – apokryfos

回答

1

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

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

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

+0

+1来回答这个问题。最好生成一个随机的串行代码,将其与客户信息一起保存到数据库中,然后轻松查找。 –

+0

这就是说,在某些情况下,软件可能不会连接到互联网。因此,解码序列号将验证序列是在购买后在我的网站上生成的。 –

0

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

相关问题