页面加载时显示错误消息

时间:2013-09-16 15:07:46

标签: php html mysql sql

我的网页加载时显示无效代码消息。即使我没有提交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';
}

2 个答案:

答案 0 :(得分:2)

你应该用

包装你的代码
if ($_SERVER['REQUEST_METHOD'] === 'POST') {}

确保只有在发送邮件请求(发送表单)后才会执行。

当然,您还应该使用PDOmysqli代替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,并学习使用参数化查询。