我创建的ajax函数不会删除cookies

如何解决我创建的ajax函数不会删除cookies

我试图在按下“a”后删除 cookie。所以我想到了这样使用ajax:

<?PHP 
$logged = false;
if (isset($_COOKIE["psw"]) && isset($_COOKIE["usn"])){
    $logged = true;

    ?> 
    <script>
    console.log("status: Logged");
    var ahr = document.getElementById('ahr');
    ahr.setAttribute('href','');
    ahr.innerHTML="Log-out";

    ahr.onclick = function remokecookies() {
      $.ajax({
           type: "POST",url: 'bottlesbeach.eu/ajax.PHP',data:{action:'removecks'},success:function(html) {
             alert(html);
           }

      });
    }
    </script>
    
    <?

然后在ajax.PHP上:

<?PHP
if($_POST['action'] == 'removecks') {
setcookie("usn","",time() - 86400 * 30);
setcookie("psw",time() - 86400 * 30);
}
?>

但是,当我点击“a”(即“注销”,请参阅bottlesbeach.eu)时,页面会重新加载,但不会删除cookie(我通过单击cookie> bootlesbeach.eu> cookie 检查cookie)。

我的问题是:为什么“usn”和“psw”cookies没有删除

cookies

我的库:

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></script>
<!--sweet alert lib-->
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>

解决方法

解决方案

这不起作用的原因是您实际上没有在页面中包含 jquery 库。

您可以通过添加行来解决此问题...

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">

...到页面的头部。

此外,您需要将 ajax 请求中的 url 更改为相对的 url

`url: '/ajax.php'

附加说明

页面刷新

虽然上述方法工作可以删除 cookie。它不会更新页面,例如,它仍会在菜单中显示“注销”,直到您刷新页面。

为了解决这个问题,你应该在 ajax 返回时刷新页面...

window.location.href = "/";

...或者只是将链接设置为登出网址...

<a href="/logout.php">Log out</a>

...并重新定向到主页...

header("location: /");

Cookie 内容

您不应该永远在 cookie 中存储密码等敏感信息,即使您先对其进行了加密。

相反,您应该有第二个表,将用户链接到一个长的、随机生成的“会话 ID”。然后在 cookie 中来回发送会话 ID,并在数据库中查找用户 ID。

密码

我不确定您是如何在服务器上存储密码的,但是,它们应该始终存储为 has 而不是纯文本。您可以使用内置的 PHP 函数来做到这一点...

$password = password_hash($_POST["password"],PASSWORD_DEFAULT);

...并以同样的方式验证...

$loggedon = password_verify($_POST["password"],$db_password);

效果

在使用效果使网站动态化时应该小心。就个人而言,我觉得“登录”表单在进入和离开焦点等时会扩展和收缩真的很烦人。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?