我正在尝试使用客户名称生成某种序列号。 这是我正在开发的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 :(得分:1)
如果我正确理解您的问题,您需要根据客户名称生成序列号,然后才能解码序列号以获取客户名称。
您可以将名称转换为十六进制,但在大多数情况下,字符串会比您现在使用的XXXXX-XXXXX-XXXXX-XXXXX-XXXXX格式更长。
将序列号保存在数据库中是不是更好,所以您只需检查序列号是否与客户名称在同一行?
答案 1 :(得分:0)
你有$hash = strtoupper(md5($token))
这一事实应该是一个不可逆转的转变的线索。如果要将哈希用作查找键,则需要存储原始文件。