PHP - 页面加载时显示表单错误警报

时间:2016-03-24 15:11:55

标签: php forms

我是一名新人,一路上学习。我在页面上有两个表单(我只显示其中一个表单,因为另一个表单是具有不同变量的相同代码)。它们的错误消息都显示在页面加载上。我怎么能阻止这个?

我已阅读多篇有关此事的帖子,但我仍无法找到解决方案。

<?php

    if(isset($_POST['Update'])) {
        $c_fname = $_POST['fname'];
        $c_lname = $_POST['lname'];
        $c_email = $_POST['email'];
        $c_phone = $_POST['phone'];

        // Save $_POST to $_SESSION
        //query

        $insert_det = "INSERT INTO  Cus_acc_details(CUS_Fname,CUS_Lname,Cus_Email,CUS_Phone) 
            VALUES (?,?,?,?)
            ON DUPLICATE KEY 
            UPDATE
            Cus_acc_details.CUS_Fname = '$c_fname',
            Cus_acc_details.Cus_Lname = '$c_lname',
            Cus_acc_details.Cus_Email = '$c_email',
            Cus_acc_details.CUS_Phone = '$c_phone'";

        $stmt = mysqli_prepare($dbc, $insert_det);
        //new
        // $stmt = mysqli_prepare($dbc, $insert_c);
        //debugging
        //$stmt = mysqli_prepare($dbc, $insert_c)  or die(mysqli_error($dbc));

        mysqli_stmt_bind_param($stmt, 'sssi', $c_fname, $c_lname, $c_email, $c_phone);

        /* execute query */
        $r = mysqli_stmt_execute($stmt);

        // if inserted echo the following messges
        if ($r) {
            echo "<script> alert('Saved')</script>";
        }
    } else {
        echo "<b>Oops! we have an issu </b>";
    }
?>

2 个答案:

答案 0 :(得分:2)

else之后有if (isset($_POST['Update']))。在其他内部,您显示的错误就像用户尝试提交表单一样。如果用户尝试提交表单,$_POST['Update']设置。将其他内容移到if:

if (isset($_POST['Update'])) {

    /* a bunch of code to insert into the DB */
    // if inserted echo the following messges
    if ($r) {
        echo "<script> alert('Saved')</script>";
    }else{
        echo "<b>Oops! we have an issu </b>";
    }
}

另外:

评论者是对的。您有SQL注入的风险。请改用{{3}}。

答案 1 :(得分:1)

问题是每次没有设置变量$_POST['Update']时,你的else语句就会运行。

解决此问题的一种方法是在表单检查代码中移动错误消息。像这样的东西会起作用:

if (isset($_POST['Update'])) {

    /* unchanged code snipped */

    if ($r) {
        echo "<script> alert('Saved')</script>";
    } else {
        echo "<b>Oops! we have an issu </b>";
    }
}

希望有所帮助!