php - PHP 在页面刷新或退出时销毁会话
问题描述
我正在开发一个允许用户在线处理付款的 PHP 应用程序。过程如下;
- 用户访问
/index.php
并选择“立即付款”按钮 - 用户被重定向到 worldpay 并处理付款
- 成功付款后,worldpay 向
success
我发送一个参数/callback.php
,这是我$_SESSION[status] = 'success'
在重定向回之前设置的位置/index.php
这一切都按预期工作,如果付款成功,我可以显示成功消息,但是即使用户访问网站的其他页面并返回,该消息仍然/index.php
存在,如果浏览器选项卡关闭并重新-打开。
在我的/callback.php
档案中;
session_start();
// get status sent by worldpay url
$status= $_GET['status'];
if($status=== 'success') {
$_SESSION['status'] = 'success';
header('Location: index.php');
exit();
}
在我的/index.php
我正在检查会话并显示如下消息;
if ( isset($_SESSION['status']) && ($_SESSION['status'] === 'success') ) {
echo 'success msg';
}
我只需要向用户显示一次成功消息。
$_SESSION['status']
每当用户时,我如何销毁;
- 刷新页面
- 离开页面
- 关闭标签
我应该使用 cookie 还是其他方法?
解决方案
也许您可以在一次显示成功消息后取消设置 $_SESSION['status'] 。
if ( isset($_SESSION['status']) && ($_SESSION['status'] === 'success') ) {
echo 'success msg';
unset($_SESSION['status']);
}
推荐阅读
- python - Pandas 时间序列:常规 10 分钟窗口内不规则间隔数据的分组和滚动平均值
- python - Python,请求,错误 = http.client.BadStatusLine:
- javascript - Firefox 中 contenteditable 的换行错误
- python - 将 pandas 数据框行组合成一个向量
- javascript - Javascript - 有条件地使用域名
- bash - shell sort 命令:如何按最后一列排序(列数不定)?
- google-calendar-api - Google Calendar API - 通过电子邮件创建和共享
- javascript - 谷歌地图使用 BESbswy 值创建隐藏的 div 和跨度并降低角度性能
- html - 子父 div 配对的替代方案
- azure - Azure 数据工厂复制数据很慢