Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止php页面从浏览器返回按钮?_Javascript_Php - Fatal编程技术网

Javascript 如何防止php页面从浏览器返回按钮?

Javascript 如何防止php页面从浏览器返回按钮?,javascript,php,Javascript,Php,我有一个表单,其中包含许多下拉和数字滑动条 我正在使用post方法将所选变量传递到另一个页面。我将在下一页中通过$\u POST()方法获取变量 我正在更新传递到数据库中的变量,更新后javascript弹出“youhavesavesuccessfully” 所以我的问题是,当我点击browser back按钮时,数据库中的值会一次又一次地更新。如何通过禁用浏览器后退按钮来防止此问题。请不要禁用后退按钮,而是修复数据多次保存的问题。您可以使用“You have successfully…”将用户

我有一个表单,其中包含许多下拉和数字滑动条

我正在使用post方法将所选变量传递到另一个页面。我将在下一页中通过$\u POST()方法获取变量

我正在更新传递到数据库中的变量,更新后javascript弹出“youhavesavesuccessfully”


所以我的问题是,当我点击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

  } 
?>


您可以禁用浏览器后退按钮检查此:您可以禁用浏览器后退按钮的可能重复检查此:我正在检查是否为空。但当我点击后退按钮时,它会用已经更新的相同值更新数据库。我正在检查是否为空。但当我点击后退按钮时,它会用已经更新的相同值更新数据库