include "../admin/site.php"; // Setup db connection.
$appid = -1;
if (is_string($_GET["id"]))
{
$id = mysql_real_escape_string($_GET["id"]);
$sql = "select * from version where id=$id";
$ver = mysql_query($sql);
if ($id > 0 && $ver && mysql_num_rows($ver))
{
$appid = mysql_result($ver, 0, "AppID");
$app = DLookUp("apps", "name", "id=$appid");
$name = mysql_result($ver, 0, "Name");
$notes = mysql_result($ver, 0, "Notes");
}
else $app = "No version by that ID";
}
else $app = "No ID";
/* some html snipped */
if (isset($app) && isset($name))
echo $app . " v" . $name;
else
echo "v###";
/* some html snipped */
if (isset($appid))
{
$url = "/" . DLookUp("apps", "Page", "id=$appid");
echo "<a href=\"$url\">Up</a> to $app...";
}
if (isset($notes))
echo $notes;
Somehow this code is allowing someone to see the entire contents of my database. I would've thought that mysql_real_escape_string would prevent that sort of attack? I could cast $id to an integer which should fix the issue, but I want to understand what I did wrong here, so I don't keep repeating my mistake.