我问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'];
}
}
?>
仅当 key 不包含“+”字符时才有效,并且它会输出搜索到的“license_key”的特定“id”。 如果 key 包含“+”或未找到,则页面保持空白(这是我遇到的另一个问题,因为脚本应该输出“INVALID KEY”)。
key 字符串使用 Base64 中的 AES128 进行加密。其他键有“+”字符,其他键没有。
很快,
kQcYqzQlsr4/MXJ1ySw7jQ== -- works.
CKVcua+aWlnK5qfKwcm6wA== -- does not work.
这个脚本仅供个人使用,所以我并不害怕SQL注入(inject)。
谢谢。
最佳答案
感谢@Barmar 澄清了 URL 中“+”字符的问题。 为了解决 key 不正确时出现空白页的问题,我编辑了
if ($result == "") exit("INVALID KEY");
与
if (mysql_num_rows($result)==0) exit("INVALID KEY");
现在它可以工作了。
关于php - 使用 PHP 在 MySQL 表中搜索 Base64 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43697754/