如何使用php在注销时删除浏览器的本地存储项

Posted

技术标签:

【中文标题】如何使用php在注销时删除浏览器的本地存储项【英文标题】:How to delete local storage items of browser on logout using php 【发布时间】:2016-10-10 21:14:23 【问题描述】:

我想在使用 php 注销时删除所有保存的浏览器数据。

因为我只想在每次登录时显示引导警报框,而不是在每次页面刷新时显示。

当用户注销时,它将再次重置。当用户再次登录时,它会显示。

我的代码如下所示

$(document).ready(function() 
  if (localStorage.getItem('message1') != 'shown') 
    $('#message1').toggleClass('in');
    window.setTimeout(function() 
      $("#message1").fadeTo(500, 0).slideUp(500, function() 
        $(this).remove();
      );
    , 10000);
    localStorage.setItem('message1', 'shown')
  
);
.flyover 
  margin-right: -400px;
  overflow: hidden;
  opacity: 0.9;
  z-index: 1050;
  transition: all 1s ease;
  position: fixed;
  top: 100px;
  right: 20px;
  width: 300px;
  z-index: 2000;


.flyover.in 
  margin-right: 10px;


.alert 
  color: white ! important;


.alert.close 
  font-size: 18px ! important;
  font-weight: 300 ! important;
  line-height: 18px ! important;
  color: white ! important;
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css">
</head>
<body>
  <div id="message1" class='alert bg-green flyover'><a href='#' class='close close-x' data-dismiss='alert' aria-label='close'><i class="fa fa-times text-white" aria-hidden="true"></i>
</a><strong>Successfully Logged In<br></strong>
    <h3>Welcome,
      <?php echo ucwords($adminRow['admin_name']); ?>
    </h3>
  </div>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <!-- Latest compiled and minified javascript -->
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
</body>
</html>

【问题讨论】:

为什么不使用会话存储,关闭窗口时清除? 告诉我怎么做。这种方法行得通吗? developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage 我找到了使用 PHP 和 mysql 的简单方法。 【参考方案1】:

我的解决方案是在登录页面上添加一个脚本标签

<script type="text/javascript">
    localStorage.clear();
</script>

【讨论】:

【参考方案2】:

如果要清除登录里面的存储:

$('.logout').click(function() 
  $.ajax(
    type: 'GET',
    url: 'logout.php',
    data: 
      id: '123'
    ,
    datatype: 'html',
    cache: 'false',
    success: function(response) 
      localStorage.clear();
    ,
    error: function() 

    
  );
);

【讨论】:

嗨,在数据中我必须使用什么 id。当我使用这种方法时,我无法注销。我的管理面板。 注销你需要什么参数,你必须传入那个数据块 如何在 logout.php 中获取这些参数 他说“使用 php”那不是 php【参考方案3】:

由于 PHP 是一种服务器端语言,您无法使用 PHP 在客户端做任何事情。你需要 javascript 来完成这项工作。你可以用 PHP 做的就是在需要时调用 javascript。

例如,您可以编写 js 代码以重置为您想要的任何内容,并在登录页面 onload 上调用它。因此,每当用户访问登录页面以登录时,您的 js 都会调用。或者,您可以将其绑定到注销按钮上的单击事件。或者,您可以仅将其保留在登录页面中,并在注销时将用户重定向回登录页面,这将调用所需的 js。 如果您需要其他人在他们的答案中发布的代码示例。

【讨论】:

【参考方案4】:

注销上添加script tagonclick

<a href=" route('logout') " 
    onclick="event.preventDefault();
             document.getElementById('logout-form').submit();
             localStorage.clear();"
    class="dropdown-item notify-item"> 
  <i class="pe-7s-power"></i>
  <span>Logout</span>
</a>

【讨论】:

【参考方案5】:

我找到了我的问题的答案,这可以在 PHP 和任何数据库的帮助下轻松完成。

在dashboard.php中写下这段代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Dashboard</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">

    <style>
       .flyover 


margin-right:-400px;
   overflow: hidden;
   opacity: 0.9;
   z-index: 1050;
   transition: all 1s ease;
   position: fixed;
        top: 100px;
        right: 20px;
        width: 300px;
        z-index: 2000;

 
.flyover.in 
  margin-right: 10px;


      .alert
        color: white ! important;
      
      .bg-greenbackground-color: green ! important;
      .alert.close
        font-size: 18px ! important;
        font-weight: 300 ! important;
        line-height: 18px ! important;
        color: white ! important;
      
        </style>
    </head>
    <body>
         <?php 
          $message = $adminRow['message'];
         if($message == 1)
         <div id="message1" class='alert bg-green flyover'><a href='#' class='close close-x' data-dismiss='alert' aria-label='close'><i class="fa fa-times text-white" aria-hidden="true"></i>
    </a><strong>Successfully Logged In<br></strong> 
                <h3>Welcome, <?php echo ucwords($adminRow['admin_name']); ?></h3>
             </div>
          <?php 
           $admin_id = $adminRow['admin_id'];
            $query = mysql_query("UPDATE admin SET message = '0' WHERE admin_id = '$admin_id'");
          ?>
         <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
              <!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
            <script>
               $('#message1').toggleClass('in');
         window.setTimeout(function() 
        $("#message1").fadeTo(500, 0).slideUp(500, function()
            $(this).remove(); 
        );
        , 10000);
             </script>
            </body>

    
    </html>

在logout.php中写下这段代码

$admin_id = $adminRow['admin_id'];
$query = mysql_query("UPDATE admin SET message = '1' WHERE admin_id = '$admin_id'");

结果:警告框仅在管理员登录时显示。

逻辑:

当管理员登录检查消息 == 1 如果是打印消息并设置消息 == 0。 当管理员注销时设置消息== 1。这样,当管理员再次登录时,它将显示消息。

【讨论】:

以上是关于如何使用php在注销时删除浏览器的本地存储项的主要内容,如果未能解决你的问题,请参考以下文章

使用本地存储数据生成字段时如何删除表单验证错误

如何在注销/注销时清除 ReactJs 中的所有商店?

如何在浏览器多个选项卡中处理用户注销?

Ionic 使用本地缓存暂存数据 localStorage

如何在 Swift 应用程序中保存本地数据?

通过本地存储的注销功能