我试图获取一个Logout按钮,该按钮首先取消会话,然后关闭实际的标签
到目前为止,我只得到会话破坏的部分,我无法弄清楚如何让Tab关闭完成
我尝试使用setIntervals在会话被销毁后回显该函数,但我没有设法完成。有人知道一些tipps?谢谢!
编辑:所有代码都在同一页面上
这是我的代码:
[HTML]
<input type="hidden" name="vLogout" value="false">
<input type="button" value="Logout" name="Logging out" onClick="logout(this.form)" style="background-color:#cc0000;color:#ffffff">
[PHP]
这是<?php
if($_REQUEST["vLogout"])
{
session_start();
session_unset();
session_destroy();
echo "<script>closeTab();</script>";
}
[Javascript]
function logout(f)
{
var confirmed = confirm("Are you sure you want to logout?");
if (confirmed){
f.method="post";
f.vLogout.value = true;
f.submit();
}
}
function closeTab(){
confirm("test");
//window.open(document.URL,'_self','resizable=no,top=-245,width=250,height=250,scrollbars=no');
//window.close();
}
答案 0 :(得分:1)
function logout(f)
...
f.submit();
您实际上正在提交表单,该表单会导致请求 new 文档,即当php脚本完成且其输出<script>closeTab();</script>
已传输到客户端时,没有功能closeTab
..更多。
也不能保证你的javascript代码可以关闭那个特定的窗口,所以我建议让你的php脚本打印出一个完整的html文档尝试来关闭窗口/标签,但也会显示一些在脚本失败的情况下为用户提供的信息。
答案 1 :(得分:1)
你可以尝试在logout(f)函数中添加这一行。
f.dataType = 'script';
注销功能应该是:
function logout(f)
{
var confirmed = confirm("Are you sure you want to logout?");
if (confirmed){
f.method="post";
f.dataType = 'script'; //this line should be added
f.vLogout.value = true;
f.submit();
}
}
在没有脚本标记的php代码中编写脚本:
echo "closeTab();";
它应该有用。
答案 2 :(得分:1)
注意:很可能,您无法使用JS关闭选项卡以解决安全问题。您只能使用JS打开使用JS打开的选项卡。
您可以使用JQuery。不要提交表格。使用onclick事件向服务器发送Ajax请求。当Ajax请求的dataType是'script'时,浏览器将执行响应体作为JS。
注意:将文件(index.php和logout.php)保存在同一目录中。
index.html中的:
<html>
<head>
<title>Ajax Logout</title>
<style>
.logout-button {
background:#00aaee;
display:inline-block;
padding: 5px 10px;
cursor: pointer;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
</head>
<body>
<div class="logout-button">logout</div>
<script type="text/javascript">
function closeTab(){
confirm("test");
//your code here
}
$('.logout-button').on('click', function(){
$.ajax({
url: ('logout.php'),
type: 'POST',
dataType: 'script'
});
});
</script>
</body>
</html>
logout.php中的:
<?php
session_start();
session_unset();
session_destroy();
echo "closeTab();";
?>
答案 3 :(得分:0)
使用session_start();在页面顶部而不是任何函数
和onClick =“logout(this.form)”到onClick =“logout(document.form)”
使用输入类型=提交。不是“按钮”而是取代$ _REQUEST [“vLogout”]使用
if(isset($ _ POST [“vLogout”]))或if(isset($ _ GET [“vLogout”]))