Hice esta pregunta ayer, pero no obtuve una respuesta y la pregunta se marcó como duplicada, que no lo es.
Cambié el nombre de la columna "clave" a "lic_key" y el nombre de la tabla "claves" a "license_keys" porque entiendo que están reservados por MySQL.
Este es mi código 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']; } } ?>Esto funciona solo si la clave NO contiene el carácter "+" y genera el "id" específico para la "license_key" buscada. Si la clave contiene "+" o no se encuentra, la página permanece en blanco (que es otro problema que tengo, porque la secuencia de comandos debería generar "CLAVE NO VÁLIDA").
Las cadenas de claves se cifran mediante AES128 en Base64. Otras teclas tienen el carácter "+", otras no.
Dentro de poco,
kQcYqzQlsr4/MXJ1ySw7jQ== -- works. CKVcua+aWlnK5qfKwcm6wA== -- does not work.Este script es solo para uso personal, por lo que no me asusta la inyección de SQL.
Gracias.
Gracias a @Barmar por aclarar el problema con el caracter "+" en la URL. Para solucionar el problema con la página en blanco si la clave es incorrecta, edité
if ($result == "") exit("INVALID KEY");con
if (mysql_num_rows($result)==0) exit("INVALID KEY");y ahora funciona.