使用 PHP 在 MySQL table 中搜索 Base64 字符串

Search Base64 string in MySQL table using PHP

我昨天问了,但是我没有得到答案而且这个问题被标记为重复,这不是。

我将 "key" 列名称更改为 "lic_key" 并将 "keys" table 名称更改为 "license_keys" 因为我知道它们由 [=39= 保留].

这是我的 PHP 代码:

<?php
    require 'config.inc.php';
    /* Connect to database and grab the keys */

    @mysql_connect($g_mysql_host,$g_mysql_usr,$g_mysql_pass)
    or die("Couldn't connect to database server");
    @mysql_selectdb($g_mysql_db)
    or die("Couldn't select database");
    $key = mysql_real_escape_string($_GET["key"]);
    $query = "SELECT * FROM `license_keys` WHERE `lic_key` = '$key'";
    $result = mysql_query($query);
    if ($result == "") exit("INVALID KEY");
    else {
        while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
            echo $row['id'];
        }
    }

?>

这仅在键不包含“+”字符时有效,并且它会为搜索到的 "license_key" 输出特定的 "id" 。 如果密钥包含“+”或未找到,页面将保持空白(这是我遇到的另一个问题,因为脚本应该输出 "INVALID KEY")。

密钥字符串使用 Base64 中的 AES128 加密。其他键有“+”字符,其他键没有。

很快,

kQcYqzQlsr4/MXJ1ySw7jQ==  -- works. 

CKVcua+aWlnK5qfKwcm6wA== -- does not work.

此脚本仅供个人使用,所以我不害怕 SQL 注入。

谢谢。

感谢@Barmar 澄清了 URL 中“+”字符的问题。 如果密钥不正确,为了解决空白页的问题,我编辑了

if ($result == "") exit("INVALID KEY");

if (mysql_num_rows($result)==0) exit("INVALID KEY");

现在可以使用了。