0

我正在尝试创建一个登录页面,当您单击注销时,它会将您注销然后刷新页面,但是,只要 JavaScript $.get 是它,它就不会运行 php 代码,但是它会刷新页面. 帮助将不胜感激。

索引.php

   <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
   <script type="text/javascript">
    function logOut() {
            $.get("logout.php");
            location.Reload();
            return false;
        }
   </script>
   <a href="#" onclick="logOut();">Log Out</a>

注销.php

<?php
    setcookie('username', '', 0);
    setcookie('password', '', 0);
?>
4

4 回答 4

4

您必须在成功时添加刷新,或者至少等待呼叫结束。

  <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
   <script type="text/javascript">
    function logOut() {
            $.get("logout.php" , returndata , function() {
            location.Reload(); });
        }
   </script>
   <a href="#" onclick="logOut();">Log Out</a>

更改您的 setcookie 也将立即删除。常用的方法是输入过去的时间戳:

setcookie('cookiename',0,( time() - 3600 ));
于 2013-01-01T17:05:58.103 回答
3

为什么不使用 javascript 来删除 cookie,而不是使用 php 作为 PHP cookie。

于 2013-01-01T17:11:47.617 回答
1

首先 ,您错误地实现了注销功能。如果您想删除所有 cookie(假设您的系统并不复杂,比如您不需要保留用户偏好,如主题、语言、UI 参数)

那么logout.php应该类似于

<?php

//Will remove all cookies
if ( !empty($_COOKIE) ){
  foreach($_COOKIE as $key){
     //Set each key in past
     setcookie($key, null, time() - 84600);

  }
}

//Would destroy the session if it does exists
if ( !empty($_SESSION) ){
  session_destroy();
}

//Don't forget to redirect back to home page
header('Location: /');
exit();

如果您 100% 确定 cookie 已设置,但setcookie()没有删除它们,那么可能 99% 它们位于不同的路径上。

确保在设置/删除它们时,它们位于同一路径上。 setcookie()接受第 4 个可选参数,称为path.

<?php

//So when you set a cookie
setcookie('cookie_key', 'cookie_value', time() + some_lifetime_in_seconds, '/');

//And when you remove a cookie:
setcookie('cookie_key', '', time() - 86400, '/');

其次
,您不应该使用类似 AJAX 的注销功能。这是不明智的,有点浪费内存。

编码:

   <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
   <script type="text/javascript">
    function logOut() {
            $.get("logout.php");
            location.Reload();
            return false;
        }
   </script>
   <a href="#" onclick="logOut();">Log Out</a>

应该改写为

 <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
 <a href="/logout.php">Log Out</a>
于 2013-01-01T19:07:54.287 回答
1

根据setcookie

setcookie('username', '', 0);

在会话结束时过期

expire
cookie 过期的时间。这是一个 Unix 时间戳,因此是自纪元以来的秒数。换句话说,您很可能会使用 time() 函数加上您希望它过期之前的秒数来设置它。或者你可以使用 mktime()。time()+60*60*24*30 将设置 cookie 在 30 天内过期。如果设置为 0 或省略,cookie 将在会话结束时(浏览器关闭时)过期。

如果要删除 cookie,则应使用除0

setcookie('username', '', 1);
于 2013-01-01T17:17:24.650 回答