【问题标题】:how to set PHP confirmation dialog box before save and after form validation in single page [closed]如何在单页中保存之前和之后设置PHP确认对话框[关闭]
【发布时间】:2017-02-05 13:08:55
【问题描述】:

如何在php中完成表单验证后弹出确认对话框?如果用户点击提交按钮,它应该验证用户输入,最后它会询问确认消息,如“你想保存吗?”使用确定和取消按钮,那么只有它应该将数据保存到数据库中。 请参考以下代码。

 <?php
    error_reporting( ~E_NOTICE );
    $name_err='';
    $name='';
    $type_err='';
    $type='';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['submit'])) {

              $e = true;

        if (empty($_POST['name'])) {
            $name_err = "Please enter the Product Name";
            $e = false;
        } else {
            $name = $_POST['name'];
            // check if name only contains letters and whitespace

        }
     if (empty($_POST['type'])||$_POST['type']=="select") {
            $type_err = "Please select the Product Type";
            $e = false;
        } else {
            $type = $_POST['type'];

                   }
     $con = mysqli_connect("localhost", "root", "", "csr");
    if (!$con) {
        die('Could not connect: ' . mysql_error());
    }


}
//final check whether it is true the input will process

    if($e)
    {

        mysqli_select_db($con, "csr");

        mysqli_query($con, "insert into products(employee_id, name, type, brand, model, url, conditions, about, listedon, image_path, reserved_price, Purchased_price, buy_now_price, sale_end_date)
                                   values('$eid','$name','$type','$brand','$model','None','$condition','$about','$listedon','$imgName','$reserved_price','$Purchased_price','$buy_now_price','$sale_end_date')") or  die('Could not connect: ' . mysql_error());

        header('Location:/sellproduct/index/');
        mysqli_close($con);

    }
}
?>
 <form action=" "  method="post" class="stdform stdform2" autocomplete="off" enctype="multipart/form-data">

                    <p>
                             <input type="hidden" name="employee_id" value="" id="employee_id" />
                    </p>
                <p>
                    <label for="name" class="required">Product Name</label>
                    <span class="field">
                        <input type="text" name="name" id="name" value="<?php echo $name;?>" /><br><span class="error"><?php echo $name_err;?></span></span>

                </p>
                <p>
                    <label for="type" class="required">Product Type</label>
                    <span class="field">
                    <select name="type" id="type" minlength="2" maxlength="60">
                            <option value="select" label="Select" <?php echo ($type == "select" || empty($type) ? "selected='selected'" : "");  ?> selected disabled >Select</option>
                            <option value="Electronics" label="Electronics" <?php echo ($type == "Electronics" ? "selected='selected'" : ""); ?>>Electronics</option>
                            <option value="Appliances" label="Appliances" <?php echo ($type == "Appliances" ? "selected='selected'" : ""); ?>>Appliances</option>
 <form action=" "  method="post" class="stdform stdform2" autocomplete="off" enctype="multipart/form-data">

                    <p>
                             <input type="hidden" name="employee_id" value="" id="employee_id" />
                    </p>
                <p>
                    <label for="name" class="required">Product Name</label>
                    <span class="field">
                        <input type="text" name="name" id="name" value="<?php echo $name;?>" /><br><span class="error"><?php echo $name_err;?></span></span>

                </p>
                <p>
                    <label for="type" class="required">Product Type</label>
                    <span class="field">
                    <select name="type" id="type" minlength="2" maxlength="60">
                            <option value="select" label="Select" <?php echo ($type == "select" || empty($type) ? "selected='selected'" : "");  ?> selected disabled >Select</option>
                            <option value="Electronics" label="Electronics" <?php echo ($type == "Electronics" ? "selected='selected'" : ""); ?>>Electronics</option>
                            <option value="Appliances" label="Appliances" <?php echo ($type == "Appliances" ? "selected='selected'" : ""); ?>>Appliances</option>
 <form action=" "  method="post" class="stdform stdform2" autocomplete="off" enctype="multipart/form-data">

                    <p>
                             <input type="hidden" name="employee_id" value="" id="employee_id" />
                    </p>
                <p>
                    <label for="name" class="required">Product Name</label>
                    <span class="field">
                        <input type="text" name="name" id="name" value="<?php echo $name;?>" /><br><span class="error"><?php echo $name_err;?></span></span>

                </p>
                <p>
                    <label for="type" class="required">Product Type</label>
                    <span class="field">
                    <select name="type" id="type" minlength="2" maxlength="60">
                            <option value="select" label="Select" <?php echo ($type == "select" || empty($type) ? "selected='selected'" : "");  ?> selected disabled >Select</option>
                            <option value="Electronics" label="Electronics" <?php echo ($type == "Electronics" ? "selected='selected'" : ""); ?>>Electronics</option>
                            <option value="Appliances" label="Appliances" <?php echo ($type == "Appliances" ? "selected='selected'" : ""); ?>>Appliances</option>
</select><br><span class="error"><?php echo $type_err;?></span></span>                </p>

<p class="stdformbutton">
                    <input type="submit" class="bluishBtn button_small" name="submit" value="SAVE" id="submit">

                    <button name="cancel" id="cancel" type="button" class="greyishBtn button_small">Cancel</button>                </p>

</form>

请帮帮我。

【问题讨论】:

    标签: php dialog box confirmation


    【解决方案1】:

    你不能直接通过 PHP 生成一个对话框,在你最后的 if 语句中,你应该回显一个带有 javascript 的基本 html,它重定向到另一个 php 页面,将你的输入插入到参数中:

    echo '
    
    <html>
    <script type="text/javascript">
    
    function input_confirm(){
    
        var r = confirm("Confirm this input : '.$_POST['name'].'-'.$_POST['type'].'");
        if(r){
            window.location.href = "insert.php?type='.$_POST['type'].'&name='.$_POST['name'].'";
        }
    }
    
    
    </script>
    
    <body onload="input_confirm()">
    </body>
    
    </html>
    
    ';
    

    【讨论】:

    • 感谢您的及时回复,它没有询问任何确认框,也没有输入。
    • 我刚刚更正了代码。由于该函数也被称为确认,因此出现了错误。我刚试过,现在应该可以了:-)
    • 非常感谢.....祝您有美好的一天!!!
    • 你也是,如果对你有帮助,请不要忘记查看我的评论作为答案。
    • 是....运行良好....我还有一个问题,请参考以下网址:stackoverflow.com/questions/42043094/…
    【解决方案2】:

    最佳解决方案是在客户端和服务器端进行两次验证。无需使用可以在客户端机器上预先验证的无效数据来打扰服务器。

    对于客户端验证,您需要编写一些 javascript 在用户单击 提交 按钮后验证表单。当然提交按钮必须是标准类型的按钮,你不希望它实际提交而只是调用javascript验证函数。如果你愿意,你可以使用 validate.js。

    因此,验证功能在完成工作后会弹出是否保存数据的问题,或者...不同的弹出窗口显示需要更正表单的信息。将这两个表格放在不可见的 DIV 块中,并在需要时显示它们。 现在在一个问题中弹出 OK 按钮调用另一个 javascript 函数,该函数现在对发送所有表单数据的服务器进行 ajax 调用。

    如果您的验证取决于某些数据库状态或服务器上的任何内容,您可以在验证函数中进行一次额外的 ajax 调用以向服务器询问更多信息,甚至要求它立即验证某些字段。这很有用,例如,如果您有注册表并希望立即向用户显示昵称已在使用中的信息,以便他可以在按下 Sumbit 之前更改它。

    然后在服务器收到此数据后,您需要进行另一次服务器端验证,以检查数据完整性和可能的​​攻击。

    希望这会有所帮助。顺便说一句,如果您需要在单个页面中执行此类操作,我真的建议您实现 jQuery 和 validate.js。

    【讨论】:

      猜你喜欢
      • 2020-10-27
      • 1970-01-01
      • 2019-04-29
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多