gpt4 book ai didi

PHP 模仿 http 基本身份验证的注销功能

转载 作者:可可西里 更新时间:2023-11-01 17:10:40 24 4
gpt4 key购买 nike

我知道退出 http 没有“真正的解决方案”,因为它是无状态的。但是,我只需要一个解决方法。我想要实现的是,当单击注销链接时,它会重定向到 logout.php 文件。该文件再次调用基本身份验证 header 。我想让 php 代码传递一个伪造的密码,然后重定向到我的主页,用户将在那里“注销”。

我意识到他们实际上不会被注销,而是浏览器将尝试使用最新的身份验证凭据,这些凭据将被传入但不正确,因此让用户使用有效凭据重新登录。

我基本上没有 php 经验,不知道如何编写错误密码的传递。

感谢任何帮助。

logout.php

<?php
session_start();
session_write_close();

header('HTTP/1.1 401 Access Denied');
header('WWW-Authenticate: Basic realm="HTTPS File Upload"');
header('HTTP/1.0 401 Unauthorized');
header('Location: http://www.homepage.com')
?>

最佳答案

此页面上的示例 #3 可能与您正在寻找的内容很接近。

http://php.net/manual/en/features.http-auth.php

您可以采用的另一种方法是改为实现 PHP session 。这是一个很好的基础读物。

http://phpmaster.com/php-sessions/

编辑 -如果添加 PHP session (是的,您可以同时拥有两者),则无需强制使用无效凭据。即使您拥有的唯一 session 变量是 bool 值 $_SESSION["IsLoggedIn"]。使用上述变量,您可以将其添加到示例 #3 中的 if 语句中,如下所示,并通过您的 logout.php 脚本将其从 session 中删除。

if (!isset($_SESSION["IsLoggedIn"]) || !isset($_SERVER['PHP_AUTH_USER']) ||
($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
authenticate();
} else {
...
}

并且不要忘记使用 session_start();每当您使用 $_SESSION 变量时,就会出现在页面顶部。

关于PHP 模仿 http 基本身份验证的注销功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18085883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com