Javascript 如何防止php页面从浏览器返回按钮?
我有一个表单,其中包含许多下拉和数字滑动条 我正在使用post方法将所选变量传递到另一个页面。我将在下一页中通过$\u POST()方法获取变量 我正在更新传递到数据库中的变量,更新后javascript弹出“youhavesavesuccessfully”Javascript 如何防止php页面从浏览器返回按钮?,javascript,php,Javascript,Php,我有一个表单,其中包含许多下拉和数字滑动条 我正在使用post方法将所选变量传递到另一个页面。我将在下一页中通过$\u POST()方法获取变量 我正在更新传递到数据库中的变量,更新后javascript弹出“youhavesavesuccessfully” 所以我的问题是,当我点击browser back按钮时,数据库中的值会一次又一次地更新。如何通过禁用浏览器后退按钮来防止此问题。请不要禁用后退按钮,而是修复数据多次保存的问题。您可以使用“You have successfully…”将用户
所以我的问题是,当我点击browser back按钮时,数据库中的值会一次又一次地更新。如何通过禁用浏览器后退按钮来防止此问题。请不要禁用后退按钮,而是修复数据多次保存的问题。您可以使用“You have successfully…”将用户传递到一个单独的页面 然后,如果用户试图返回,请查看
$\u服务器['HTTP\u REFERER']
,如果是“successful.php”,则不要保存数据
禁用“后退”按钮是我阻止页面以便无法再次访问的一个重要原因。我真的很讨厌他们这样做,或者添加了几个页面,而您必须单击“上一步”才能从页面中退出。不要禁用“上一步”按钮,而是修复数据多次保存的问题。您可以使用“You have successfully…”将用户传递到一个单独的页面 然后,如果用户试图返回,请查看
$\u服务器['HTTP\u REFERER']
,如果是“successful.php”,则不要保存数据
禁用“后退”按钮是我阻止页面以便无法再次访问的一个重要原因。我真的很讨厌他们这样做,或者添加几个页面,你必须单击“上一步”才能从页面中退出。你可以让你的post方法打开一个新选项卡,这样就没有返回导航:
<!DOCTYPE HTML>
<html>
<body>
<form action="www.google.com" method="post" target="_blank">
<input type="submit">
</form>
</body>
</html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$('#theSubmit').on('click', function () {
setTimeout(function(){
window.close();
}, 500);
})
</script>
$('theSubmit')。在('click',函数(){
setTimeout(函数(){
window.close();
}, 500);
})
目标生成新窗口
如果要关闭旧窗口,请添加两个脚本,在新选项卡打开500毫秒后关闭上一个选项卡。您可以让post方法打开一个新选项卡,这样就没有返回导航:
<!DOCTYPE HTML>
<html>
<body>
<form action="www.google.com" method="post" target="_blank">
<input type="submit">
</form>
</body>
</html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$('#theSubmit').on('click', function () {
setTimeout(function(){
window.close();
}, 500);
})
</script>
$('theSubmit')。在('click',函数(){
setTimeout(函数(){
window.close();
}, 500);
})
目标生成新窗口
如果要关闭旧窗口,请添加两个脚本,在新选项卡打开500毫秒后关闭上一个选项卡。如果用户使用会话返回页面,则可以重定向用户,而不是禁用“后退”按钮 page1.php
session_start();
if (isset($_SESSION['block'])) {
header('Location: page2.php');
}
session_start();
$_SESSION['block'] = true;
page2.php
session_start();
if (isset($_SESSION['block'])) {
header('Location: page2.php');
}
session_start();
$_SESSION['block'] = true;
另一个选项:
如果用户单击“上一步”,您可以通过以下方式设置所有输入字段的值:
page1.html
var block = localStorage.getItem("block");
window.addEventListener("beforeunload", function() {
if (block === 1) {
const block = true;
}
});
if (block) {
const inputs = document.getElementsByTagName('input');
for (input of inputs) {
input.value = '';
}
}
localStorage.setItem("block", 1);
page2.html
var block = localStorage.getItem("block");
window.addEventListener("beforeunload", function() {
if (block === 1) {
const block = true;
}
});
if (block) {
const inputs = document.getElementsByTagName('input');
for (input of inputs) {
input.value = '';
}
}
localStorage.setItem("block", 1);
在这种情况下,如果不想更新数据库中的值,请使用:
if (!empty($_POST['my_value']) { // Add to database })
如果用户使用会话返回页面,您可以重定向用户,而不是禁用后退按钮 page1.php
session_start();
if (isset($_SESSION['block'])) {
header('Location: page2.php');
}
session_start();
$_SESSION['block'] = true;
page2.php
session_start();
if (isset($_SESSION['block'])) {
header('Location: page2.php');
}
session_start();
$_SESSION['block'] = true;
另一个选项:
如果用户单击“上一步”,您可以通过以下方式设置所有输入字段的值:
page1.html
var block = localStorage.getItem("block");
window.addEventListener("beforeunload", function() {
if (block === 1) {
const block = true;
}
});
if (block) {
const inputs = document.getElementsByTagName('input');
for (input of inputs) {
input.value = '';
}
}
localStorage.setItem("block", 1);
page2.html
var block = localStorage.getItem("block");
window.addEventListener("beforeunload", function() {
if (block === 1) {
const block = true;
}
});
if (block) {
const inputs = document.getElementsByTagName('input');
for (input of inputs) {
input.value = '';
}
}
localStorage.setItem("block", 1);
在这种情况下,如果不想更新数据库中的值,请使用:
if (!empty($_POST['my_value']) { // Add to database })
无论何时发布数据,都应检查发布数据是否为空
<?php
if(isset($_POST) && !empty($_POST) ){
//your code for update
//Then after run update query and success message ,do empty the post
$_POST=array(); // empty the post
}
?>
无论何时发布数据,都应检查发布数据是否为空
<?php
if(isset($_POST) && !empty($_POST) ){
//your code for update
//Then after run update query and success message ,do empty the post
$_POST=array(); // empty the post
}
?>
您可以禁用浏览器后退按钮检查此:您可以禁用浏览器后退按钮的可能重复检查此:我正在检查是否为空。但当我点击后退按钮时,它会用已经更新的相同值更新数据库。我正在检查是否为空。但当我点击后退按钮时,它会用已经更新的相同值更新数据库