我的代码有问题。 第一个工作,它将生成一个cdkey并将其输入mysql db。
<?
function createRandomKey($amount)
{
$keyset = "abcdefghijklmABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$randkey = "";
for ($i=0; $i<$amount; $i++)
$randkey .= substr($keyset, rand(0, strlen($keyset)-1), 1);
return $randkey;
}
if($_POST['post_true'] == "true")
{
$randomkey = createRandomKey(20);
query(" INSERT INTO cdkeys (`cdkey`,`used`,`user_id`) VALUES (' ".escapeadmin($randomkey)."', '".escapeadmin(0)."', '".escapeadmin(0)." ') ");
echo "<b>Generated Key:</b> ";
echo $randomkey;
}
?>
它将使用不同的数字和字符,a-z0-9,cdkey长度为20个字符。
第二个代码是用于检查数据库中是否存在cdkey的代码。
<?
// FETCH POSTED CDKEY
$postedkey = $_POST['cdkey'];
$sql_check_cdkey = query("SELECT * FROM cdkeys WHERE cdkey = '".escape($postedkey)."' ");
$qry_check_cdkey = mysql_fetch_array($sql_check_cdkey);
if(mysql_num_rows($sql_check_cdkey) == "0") { red("Wrong CD Key Entered"); echo $_POST['cdkey']; }
else
{
echo "exists, magic time";
}
?>
现在的问题是,无论何时我输入密钥,让我们说: 736KhYDmZhm1G1P72Ja5HIUg4VcBd9 在数据库中(我检查过,发生器甚至回显了我的钥匙) 钥匙无法找到。我总是得到cd key不存在的消息。 关键在那里,但它只是找不到它。 我试图将数字和字符中的密钥更改为“testkey123”,当我尝试搜索时,这次工作正常。
似乎无法将其视为随机字符。 我错过了什么?我真的需要解决它。 谢谢
答案 0 :(得分:0)
您的测试字符串'736KhYDmZhm1G1P72Ja5HIUg4VcBd9'长度为30个字符 - 但您说“cdkey length是20个字符”。您可能在存储时截断字符串。
更改存储字符串的列的大小:
ALTER TABLE tablename CHANGE cdkey cdkey varchar(100)