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

时间:2017-04-29 16:03:28

标签: php mysql base64

昨天我问this question,但我没有得到答案,问题已被标记为重复,但事实并非如此。

我将“key”列名更改为“lic_key”和“keys”表名为“license_keys”,因为我知道它们是由MySQL保留的。

这是我的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注入。

感谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

现在可行。