【发布时间】:2012-11-10 15:33:44
【问题描述】:
如何在用户离开页面时取消设置SESSION['variables'],而不必在我网站上每个页面的顶部添加一些内容?
您周围有什么最佳实践吗?
谢谢。
编辑
我有一个设置公司和客户的向导。这包括 2 页:1 页用于公司,1 页用于客户。如果用户想为客户重复使用在公司填写的数据,他可以选中复选框,当第 1 页(公司)的表单发布时,在第 2 页(客户)这些字段会自动设置(想想字段,例如:邮政地址、街道、电话等)。用户可以随时访问第 1 页和第 2 页,因此我必须取消设置会话,否则它将继续自动填充字段。
我可以在第 2 页设置字段后取消设置会话,但是当他刷新浏览器时,字段再次变为空。这当然不是什么大问题,但是当用户转到任何其他页面(不退出浏览器并在我的网站内)时,是否有一种简单的方法可以仅取消设置这些会话?
编辑
我的代码:
公司页面:
$_SESSION['wizard2']= "true"; // used for manipulating page when entering in wizard mode
if (isset($_POST['savedata'])) // if user wants to re-use data from page1
{
$_SESSION['savedata'] = "true";
$_SESSION['custprovincesession']=mysql_real_escape_string($_POST['compprovince']);
header("Location:customer_page.php");
exit();
客户页面:
if (isset($_SESSION['wizard2'])) // used for manipulating page when entering in wizard
{
unset ($_SESSION['wizard2']);
}
if (isset($_SESSION['savedata'])) // if user wants to re-use data from page1
{
$_SESSION['wizard3'] = "true";
}
<tr>
<th><label for="custprovince">Province:</label></th>
<th><input type="text" name="custprovince" style=width:200px id="custprovince" size="8" value="<?php if (isset($_SESSION['wizard3'])) { echo $_SESSION['custprovincesession'];}?>"/></th>
<th> </th>
<th> </th>
</tr>
在第 2 页的末尾:
if (isset($_SESSION['wizard3']))
{
unset ($_SESSION['wizard3']);
unset ($_SESSION['custprovincesession']);
}
因此,通过刷新页面可以取消设置会话。当用户离开“customer_page.php”时,有没有其他方法可以取消这些会话?
【问题讨论】:
-
您还可以在页面底部添加未设置的会话。你有什么要求?
-
页面底部是我现在所拥有的。但是刷新时,这些会话未设置。仅在离开该特定页面时取消设置会话可能对我的其他页面派上用场。 (PS。见我的编辑)
-
你想使用 js 还是 jquery 以获得更好的结果?
标签: php session session-variables unset