我的网页加载时显示无效代码消息。即使我没有提交html表单。当我通过html表单提交无效代码时,它应该出来。任何想法如何解决这个问题?
$db_selected = mysql_select_db("test", $con);
if (!$db_selected) {
die ('Database error!' . mysql_error());
}
else{
$row = mysql_query("SELECT * FROM discount_code WHERE disc_code IN('" .implode( "','", $dc_array )."')") or die(mysql_error());
if (mysql_num_rows($row) == 0){
echo 'Invalid code';
}
else{
echo 'success';
}
答案 0 :(得分:2)
你应该用
包装你的代码if ($_SERVER['REQUEST_METHOD'] === 'POST') {}
确保只有在发送邮件请求(发送表单)后才会执行。
当然,您还应该使用PDO
或mysqli
代替mysql_*
并考虑prepared statements
。
答案 1 :(得分:1)
您可以使用isset()
确保表单已实际提交。
说你的表格是:
<form action="post" "somefile.php">
<input type="text" name="username" />
<input type="text" name="password" />
<input type="submit" name="yourSubmitFormButton" />
</form>
然后您可以使用以下内容:
if (isset($_POST['yourSubmitFormButton'])) {
// code goes here
}
因此,当您加载页面时,isset条件将评估为FALSE
,并且if
块中的代码将不会被执行。按下提交按钮后,条件将评估为TRUE
,并且将执行subsqeuent语句。
此外,正如当前编写的那样,您的代码很容易受到SQL注入的攻击。在将它们插入查询之前,您应该转义用户输入。
$dc_array = mysql_real_escape_string($dc_array);
//code
更好的是,停止使用已弃用的mysql_*
函数并切换到PDO或MySQLi,并学习使用参数化查询。