有没有办法在页面中声明iframe,这样每次刷新页面时,都会清除其中的任何会话变量?
现在我有一个用.NET MVC编写的Web应用程序,在其中一个页面上加载了一个指向用PHP编写的另一个应用程序的iframe。基本上发生的事情是iframe在刷新整个页面时记住会话状态,但理想情况下每次都要重新启动它。有没有办法做到这一点?或者我是否需要在页面刷新时调用iframe中的注销脚本?
答案 0 :(得分:1)
它只是一个概念证明,但它有效。 您的项目缺少一些信息,但是:
你可以为第一次访问创建cookie, 如果用户重新加载页面并且存在cookie
使用参数加载iframe,否则加载普通iframe (代码是故意简短的产生iframe)
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>with iframe</title>
<script>
function checkFirstVisit() {
if(document.cookie.indexOf('checkreload')==-1) {
document.cookie = 'checkreload=1';
document.write('<iframe width="560" height="315" src="content.php"></iframe> ');
}
else {
document.write('<iframe width="560" height="315" src="content.php?reloaded=yes"></iframe>');
}
}
</script>
</head>
<body onload="checkFirstVisit()">
</body>
</html>
在你的php代码(iframe)中, 只需在需要时检查并取消设置
<?php
session_start();
if(isset($_GET['reloaded'])) {
unset($_SESSION['name']);
} else {
$_SESSION['name'] = 'nameSession';
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>frame</title>
</head>
<body>
<p>
<?php
if(isset($_SESSION['name'])) {
echo $_SESSION['name'];
}else{
echo 'no name now !';
}
?>
</p>
</body>
</html>
不要忘记在方便时玩cookie(管理会话) 我希望它会对你有所帮助