php - 生成 CD key 有效,检查是否存在不

标签 php mysql

我的代码有问题。 第一个有效,它将生成一个 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/

相关文章:

php - 我想显示数据库中的最后一条记录(行)

php - 在表格中并排显示图像

javascript - 如何使用 html/javascript/php 将 'Sign Up' 页面链接到 'Log In'

mysql - 用户文件软件的数据库设计

MySQL非单调查询

php - 依次生成原字符串每个字母后带撇号的字符串

php - laravel 外键迁移错误

mysql - SQL搜索日常属性错误

mysql - 数据库、表、列排序规则的区别

mysql查询返回 "0 rows inserted"