我正在制作一个测试程序,我需要使用此代码:
"href=\"testmng.php?manageqn=" . htmlspecialchars_decode($r['testname'], ENT_QUOTES) . "?subjectname=". htmlspecialchars_decode($r['subname'], ENT_QUOTES)
我的问题是manageqn
和subjectname
具有正确值时的正确格式:
else if ((isset($_REQUEST['manageqn'])) && (isset($_REQUEST['subjectname']))) {
$testname = $_REQUEST['manageqn'];
$subname = $_REQUEST['subjectname'];
$result = executeQuery("select testid from test where testname='" . htmlspecialchars($testname, ENT_QUOTES) . "';");
if ($r = mysql_fetch_array($result)) {
$_SESSION['testname'] = $testname;
$_SESSION['subjectname'] = $subname;
$_SESSION['testqn'] = $r['testid'];
header('Location: prepqn.php');
}
}
答案 0 :(得分:1)
假设您正在使用mysqli连接到数据库,您需要使用myqli_real_escape_string() PHP函数来转义字符串,否则您可能会冒险将sql注入添加到您的应用程序中:
executeQuery("select testid from test where testname='" . myqli_real_escape_string($testname) . "';");
我建议使用mysqli提供的预准备语句功能切换到参数化查询方法。然后你可以executeQuery()
这样:
executeQuery("select testid from test where testname=?", $testname)
无需转义字符串以便进行安全查询。
如果您使用已弃用的mysql
驱动程序,则应使用mysql_real_escape_string()
。