我的代码有问题。 第一个有效,它将生成一个 cdkey 并将其输入到 mysql 数据库中。
<?
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";
}
?>
现在的问题是,每当我输入 key 时,可以说: 736KhYDmZhm1G1P72Ja5HIUg4VcBd9 那在数据库中(我检查过,生成器甚至为我回显了 key ) 找不到 key 。我总是收到 cd key 不存在的消息。 key 在那里,只是找不到。 我尝试将 key 从数字和字符更改为“testkey123”,当我尝试搜索时,这次成功了。
它似乎无法找到它作为随机字符。 我错过了什么?我真的需要修复它。 谢谢
最佳答案
您的测试字符串“736KhYDmZhm1G1P72Ja5HIUg4VcBd9”长 30 个字符 - 但您说“cdkey 长度为 20 个字符”。您可能在存储字符串时截断了它。
更改存储字符串的列的大小:
ALTER TABLE tablename CHANGE cdkey cdkey varchar(100)
关于php - 生成 CD key 有效,检查是否存在不,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20868741/