生成CDKey有效,检查是否存在

时间:2014-01-01 12:41:53

标签: php mysql

我的代码有问题。 第一个工作,它将生成一个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”,当我尝试搜索时,这次工作正常。

似乎无法将其视为随机字符。 我错过了什么?我真的需要解决它。 谢谢

1 个答案:

答案 0 :(得分:0)

您的测试字符串'736KhYDmZhm1G1P72Ja5HIUg4VcBd9'长度为30个字符 - 但您说“cdkey length是20个字符”。您可能在存储时截断字符串。

更改存储字符串的列的大小:

ALTER TABLE tablename CHANGE cdkey cdkey varchar(100)