0

MySQLConverterTool用来转换我的网络应用程序,

我面临的第一个问题是代码变大我什至不明白这意味着什么?以前是非常小的代码,现在我发现它太大了。

//old code
$ask_id = mysql_real_escape_string($_POST['ask_id']);

//after convert
$ask_id = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $_POST['ask_id']) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

它工作正常,但我想知道它是否正确,mysqli_*或者是否有一些问题或错误我需要在线修复?

我也想知道如何使这部分安全

if (isset($_POST['asking-money'])) {
    $dailyBonus = 10000;
    $update = mysqli_query($GLOBALS["___mysqli_ston"], "UPDATE users SET ask_time='$newtime', bonus='dailyBonus'  WHERE id='$userid'");
// some more calculation
}
4

3 回答 3

2

第一段代码看起来(粗略地)添加了一个巨大的三元语句来检查您使用的变量是否至少已设置,但除此之外您应该能够使用:

mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $_POST['ask_id'])

至于 SQL 查询的安全性,请尝试使用 Prepared Statements 而不是直接使用变量查询

mysqli_prepare

于 2013-09-24T17:02:05.020 回答
2

对于 mysqli_* 部分,过去使用 mysql_* 完成的大部分事情几乎与新前缀相同,因此,很可能没有问题,对于如何使其安全,只需评估和准备所有在查询中使用它们之前从用户传递的参数,换句话说,在任何情况下都不要直接在查询中使用用户输入。除此之外,代码对我来说似乎很好。

于 2013-09-24T17:03:48.593 回答
0

第一个代码是三元语句(if/else 的简写方式)。太多了,我的意见。

我推荐PDO和它的prepared statements,如果你能够使用它的话。它非常安全且易于处理。

顺便说一句:尽量避免MySQLConverterTool. 几个月后很难进入这个代码。保持智能和简单_ _ _ :-)

祝你好运!

于 2013-09-24T17:06:37.003 回答