如何在单页中设置保存前和表单验证后的PHP确认对话框
how to set PHP confirmation dialog box before save and after form validation in single page
如何设置在php表单验证完成后弹出确认对话框?如果用户单击提交按钮,它应该验证用户输入,最后它会询问确认消息,如 "Do you want to save?" 以及确定和取消按钮,然后它应该将数据保存到数据库中。
请参考下面的代码。
<?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 生成对话框,在您最后的 if 语句中,您应该回显一个基本的 html 和一个 javascript 重定向到另一个 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>
';
最佳解决方案是在客户端和服务器端进行两次验证。无需使用可以在客户端计算机上预先验证的无效数据来打扰服务器。
对于客户端验证,您需要编写一些 javascript,它将在用户单击 提交 按钮后验证表单。当然 Submit 按钮必须是标准类型按钮,你不希望它实际提交而只是调用 javascript 验证函数。如果需要,您可以使用 validate.js。
所以,验证功能在完成它的工作后,会弹出一个问题,询问是否保存数据或...不同的弹出信息,提示表单需要更正。将这两个表格放在不可见的 DIV 块中,并在需要时显示它们。
现在在一个问题中弹出 OK 按钮调用另一个 javascript 函数,该函数现在对发送所有表单数据的服务器进行 ajax 调用。
如果您的验证取决于某些数据库状态或服务器上的任何内容,您可以在验证函数中进行一次额外的 ajax 调用,以向服务器询问更多信息,甚至要求它验证某些字段即刻。这很有用,例如,如果您有注册表并想立即向用户显示昵称已被使用的信息,以便他可以在按下 Sumbit.[=10= 之前更改它。 ]
然后在服务器收到此数据后,您需要进行另一次服务器端验证以检查数据完整性和可能的攻击。
希望这对您有所帮助。顺便说一句,如果您需要在单个页面中执行此类操作,我真的建议您实施 jQuery 和 validate.js。
如何设置在php表单验证完成后弹出确认对话框?如果用户单击提交按钮,它应该验证用户输入,最后它会询问确认消息,如 "Do you want to save?" 以及确定和取消按钮,然后它应该将数据保存到数据库中。 请参考下面的代码。
<?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 生成对话框,在您最后的 if 语句中,您应该回显一个基本的 html 和一个 javascript 重定向到另一个 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>
';
最佳解决方案是在客户端和服务器端进行两次验证。无需使用可以在客户端计算机上预先验证的无效数据来打扰服务器。
对于客户端验证,您需要编写一些 javascript,它将在用户单击 提交 按钮后验证表单。当然 Submit 按钮必须是标准类型按钮,你不希望它实际提交而只是调用 javascript 验证函数。如果需要,您可以使用 validate.js。
所以,验证功能在完成它的工作后,会弹出一个问题,询问是否保存数据或...不同的弹出信息,提示表单需要更正。将这两个表格放在不可见的 DIV 块中,并在需要时显示它们。 现在在一个问题中弹出 OK 按钮调用另一个 javascript 函数,该函数现在对发送所有表单数据的服务器进行 ajax 调用。
如果您的验证取决于某些数据库状态或服务器上的任何内容,您可以在验证函数中进行一次额外的 ajax 调用,以向服务器询问更多信息,甚至要求它验证某些字段即刻。这很有用,例如,如果您有注册表并想立即向用户显示昵称已被使用的信息,以便他可以在按下 Sumbit.[=10= 之前更改它。 ]
然后在服务器收到此数据后,您需要进行另一次服务器端验证以检查数据完整性和可能的攻击。
希望这对您有所帮助。顺便说一句,如果您需要在单个页面中执行此类操作,我真的建议您实施 jQuery 和 validate.js。