PHP 摘要验证、注销

2024-01-08

有没有办法注销在 php.ini 中完成的摘要身份验证?

我尝试过 unset($_SERVER["PHP_AUTH_USER"]); 但它不会要求重新登录。 我知道如果我关闭浏览器,它就会工作,这是我的功能。

    function login(){
        $realm = "Restricted area";
        $users = array("jamesm"=>"");
        if (empty($_SERVER["PHP_AUTH_DIGEST"])) {
            header("HTTP/1.1 401 Unauthorized");
            header("WWW-Authenticate: Digest realm=\"{$realm}\",qop=\"auth\",nonce=\"".uniqid()."\",opaque=\"".md5($realm)."\"");
            return false;
        }
        if (!($data = http_digest_parse($_SERVER["PHP_AUTH_DIGEST"])) || !isset($users[$data["username"]]))
            return false;
        $A1 = md5($data["username"] . ":{$realm}:{$users[$data["username"]]}");
        $A2 = md5($_SERVER["REQUEST_METHOD"].":{$data["uri"]}");
        $valid_response = md5("{$A1}:{$data["nonce"]}:{$data["nc"]}:{$data["cnonce"]}:{$data["qop"]}:{$A2}");
        if ($data["response"] != $valid_response)
            return false;
        return true;
    }
    function logout(){
        unset($_SERVER["PHP_AUTH_DIGEST"]);
        return true;
    }

我还需要在注销功能中添加什么才能完成此操作。

如果我改变领域它可以工作,但我不希望它被改变。


取消设置 $_SERVER['PHP_AUTH_DIGEST'] 将不会产生任何效果。问题是,对于您设定的任务来说,并没有真正的“好”答案。

HTTP 规范在技术上不允许这样做,但实际上,如果您向他们发送另一个 401,大多数浏览器将有效地“注销用户”。根据 php.net/http-auth:

Netscape Navigator 和 Internet Explorer 在收到 401 的服务器响应后都会清除本地浏览器窗口的身份验证缓存。这可以有效地“注销”用户,迫使他们重新输入用户名和密码。有些人用它来“超时”登录,或提供“注销”按钮。

从您的代码来看,最简单的方法可能是这样的:

function logout(){
    header('HTTP/1.1 401 Unauthorized');
    return true;
}

但是,这实际上并没有得到 HTTP 规范的认可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 摘要验证、注销 的相关文章

  • “为什么”脚本不打印任何内容? [复制]

    这个问题在这里已经有答案了 当我运行以下脚本时 没有打印任何内容 为什么会这样呢 echo var gt 它回显 无 因为您的浏览器无法理解
  • 使用 .htaccess 启用 PHP 短标签

    我在自己的 Centos 服务器上设置了 Apache 并具有多个虚拟 Web 服务器 并且我希望仅为位于以下位置的其中一个 Web 服务器启用 PHP 短标记 var www ostickets html 我可以通过添加成功启用短标签sh
  • header() 错误未在 php 中显示

    我写了一个PHP程序 我用session start and header 函数 我知道在向客户端发送任何内容之前应该使用此函数 没关系 但是为了测试 我向客户端发送了一条测试消息echo test 在使用 header 之前 但我没有收到
  • 通过jquery传递搜索参数

    我有一个表单 如果用户输入搜索查询 其参数应通过 jquery 传递 并在获取结果后将结果加载到 div 容器中 由于我不太熟悉 jquery 我该怎么做 html currently the data is being displayed
  • 智能位置表单字段

    我的用户注册表单上有一个文本字段location 我本质上希望这个字段能够根据 Google 地图 或同等地图 进行验证 只允许有效位置通过 最好采用类似的格式滑铁卢 伦敦 or 伦敦 英国 要求 除了位置名称之外 我还想返回该位置中心的坐
  • 我如何知道请求是否来自 flash swf?

    我有一个用 flash 开发的应用程序 我需要访问一些 php 文件 因此 如果访问来自 swf 则 php 文件会返回一些数据 如何判断请求是否来自Flash 无需将 get post 变量传递给 php 可能是用户代理 推荐人 请记住
  • 算法 HmacPBESHA256 不可用

    因此 我编写了一些代码来获取 PEM 通过 bouncycastle 将其添加到 PKCS 密钥库 然后使用 java crypto 将 PKCS 密钥库值导入到 JKS 密钥库中 我发誓昨天我在执行这些步骤后成功通过了单元测试 但是今天早
  • Javascript 函数与 php 一样吗?

    我在网站上使用 WebIM 提供聊天支持 我希望能够在客户端启动聊天会话时设置一个计时器 如果操作员 技术人员在 x 秒内没有响应 我希望页面重定向到客户端可以留言的另一个页面 有点像 请稍等 我们尝试联系您 这样 如果所有技术人员都太忙或
  • 如何读取 XML 文件并从中获取值以在 PHP 编码的 HTML 页面中显示

    我有一个 XML 文件 其中有一些重复的标签 其中包含不同的值 我需要获取这些值并显示在我的网页中 请帮助我得到这个 如果您使用 PHP5 可以查看 SimpleXML 您可以在这里找到介绍教程 http www w3schools com
  • Node.js 进行 rsa 加密的正确方法?

    我正在尝试创建一个 WS 来发出肥皂请求 在消息正文中有一个包含加密文本的字段 我有公钥来加密文本 但我获得的唯一结果是文本无法识别 我使用节点的加密模块来发出请求 并且文本已加密 但我不知道为什么没有正确加密 PS我用 openssl p
  • Opencart最低下单价不包括一类

    我正在使用 opencart 并成功为所有交易添加了最低订单价格 这是我使用的代码 div div div class warning Minimum 10 Euro to checkout div 现在我想从中排除一个类别 以便可以购买该
  • 使用php将文本文件转换为xml?

    data txt ha15rs 250 home2 gif 2 ha36gs 150 home3 gif 1 ha27se 300 home4 gif 4 ha4678 200 home5 gif 5 我想使用 php 使用 simplex
  • 如何将 yii2 Restful api 中两个表的关系数据显示为 json 格式

    我遇到了将两个表中的数据显示为 JSON 格式并在 yii2 Restful api 上工作的问题 这是我的结构数据库 TABLE volunteer volunteer id int 11 NOT NULL auto increment
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • 高效插入和更新时检查唯一性

    我的员工表中有 2 列 每列值必须是唯一的 staff code staff name staff id staff code staff name 1 MGT Management 2 IT IT staff 当向表中插入或更新项目时 我
  • 如何更改锁屏自定义文本(所有者信息)?

    我写了程序代码 String message This is test Settings System putString context getContentResolver Settings Secure LOCK PATTERN EN
  • 如何使用 PHP 获取列中的所有值?

    我一直在到处寻找这个问题 但仍然找不到解决方案 如何从 mySQL 列中获取所有值并将它们存储在数组中 例如 表名称 客户 列名称 ID 名称 行数 5 我想获取此表中所有 5 个名称的数组 我该如何去做呢 我正在使用 PHP 我试图 SE
  • 如何禁止 celery 中的 pickle 序列化

    Celery 默认使用 pickle 作为任务的序列化方法 如中所述FAQ http ask github com celery faq html isn t using pickle a security concern 这代表一个安全漏
  • 无法与站点通信以检查致命错误

    无法与站点通信以检查致命错误 因此 PHP 更改已恢复 您需要通过其他方式上传 PHP 文件更改 例如使用 SFTP 有什么解决办法 我正在 WordPress 中编辑头文件 遇到这个问题 尝试这个 我有同样的问题并决定调查一下 更改 wp
  • 如何显示 PHP 对象

    我有这样的代码 dataRecord1 client gt GetRecord token table filter echo pre print r dataRecord1 echo pre foreach dataRecord1 gt

随机推荐

  • 在 .JS 文件中使用 PHP?

    所以我尝试在 js 文件中使用 PHP 这是迄今为止我所拥有的 htaccess 任何 api js 将被处理为 PHP
  • 微服务无法访问Elasticsearch镜像

    我有一个 Jhipster 版本 5v 的微服务和在 vagrant centos 7v 中运行的 ElasticSearch 镜像 2 4 1 两个镜像都在运行 但是保存和搜索操作无法到达Elasticsearch镜像 docker 撰写
  • Python 按两个键值对 JSON 列表进行排序

    我有一个 JSON 列表 如下所示 id 1 score 100 id 3 score 89 id 1 score 99 id 2 score 100 id 2 score 59 id 3 score 22 我想先对id进行排序 我用了 s
  • 使用ant编译gwt项目时出现问题

    我已经使用 GWT 有一段时间了 到目前为止只使用 eclipse 插件来编译我的项目 由于新的要求 我需要使用 ant 构建 第一次 来构建 gwt 项目 首先 我要说的是 我有 2 个具有入口点的模块和另外 2 个仅包含 java 类
  • 在 CMD 中运行 PowerShell 命令(带管道)

    当我们在 PowerShell 中运行以下命令时 get date sc C temp date log 它使用当前日期创建 date log 文件 但如果我们通过 CMD 运行相同的命令 powershell get date sc C
  • 检查组件是否是子映射中 React.ReactElement 的实例

    我有一个循环遍历子组件并将它们包装在 div 中的组件 我正在尝试添加排除项 但遇到了一个问题 我无法检查孩子是否是ReactElement或不 React ReactChild可以是字符串或数字 因此它可能没有类型 尝试下面的方法 我收到
  • 如何(大量)减少 Rails 应用程序中 SQL 查询的数量?

    在我的 Rails 应用程序中我有users其中可以有很多invoices反过来又可以有很多payments 现在在dashboard我想总结一下所有的观点payments a user已收到 按年 季度或月订购 这payments也分为g
  • 将 DateAdd 和 Format 代码从 VB6 转换为 C#

    我在 vb 中有以下代码 tAvailableDate DateAdd d 21 Format Now gDATEFORMAT 我正在尝试将其转换为 C 到目前为止我已经转换了这个 tAvailableDate DateAdd d 21 F
  • 绘制多个 Y 轴 +“色调”散点图

    数据框 df Sample Type y1 y2 y3 y4 S1 H 1000 135 220 171 S2 H 2900 1560 890 194 S3 P 678 350 127 255 S4 P 179 510 154 275 我想
  • 如何释放StructureMap中的HybridHttpOrThreadLocalScoped对象?

    在我使用的 Windows 服务中执行后台任务时HybridHttpOrThreadLocalScoped用于存储 NHibernate ISession 的实例 由于 Windows Server 中没有 HTTPContext 我想知道
  • Visual Studio 2010中dlib库的使用

    我想寻求使用方面的帮助dlib http dlib net compile html对于我的小论文项目 具体来说 我需要使用 BOBYQA 优化例程 我正在用 C 语言在 MS Visual Studio 2010 Express 中编写该
  • NSOperation 阻止 UI 绘制?

    我正在寻求一些关于使用的建议NSOperation和绘图 我有一个主线程创建我的NSOperation子类 然后将其添加到NSOperationQueue My NSOperation做了一些繁重的处理 它的目的是在 main 方法中循环几
  • 如何以编程方式检查 Android 上的 TEE 支持?

    如何以编程方式检查 Android 上的 TEE 支持 在项目中 我们需要检查是否支持 TEE 可信执行环境 才能做出决定 Regards Android 7 0引入了这个功能 密钥证明 https developer android co
  • 处理不正确的 HTTP 标头正文大小值?

    使用 C ASP NET MVC 在 Magento 站点上调用 Web 服务时 有时 Magento 站点会发送错误的 HTTP 标头 特别是正文大小标头 表明正文比实际大小大 例如 它可能会说 body size 1000 但主体仅包含
  • 我遇到了无法使用 npx 命令创建 React 应用程序的问题

    我不能使用npx create react app
  • 使用 .NET PrintDocument 打印时选择正确的纸张尺寸

    当我循环浏览每一页时 我需要决定页面的大小并选择打印它的尺寸 有没有一种简单的方法来确定它们应该是什么尺寸 现在我正在计算宽度和高度的比率 如果比率 gt 1 64 比率 1 29 比率 有几种不同的东西可以被视为 页面大小 PrintDo
  • Arrays.toString(int[]) 的反向(解析输出)[重复]

    这个问题在这里已经有答案了 JDK 或 Jakarta Commons 或其他任何地方 中是否有可以解析 Arrays toString 输出的方法 至少对于整数数组 int i fromString Arrays toString new
  • 如何检查提供的类是否存在

    我在我的 flutter 应用程序中使用 Provider 包 我有条件地使用提供程序提供 ChangeNotifier 类 树中的后续构建方法想要检查该类是否存在 如果不存在 则不是失败情况 我如何使用 Provider 包来做到这一点
  • 根据首选项显示/隐藏 iphone UI 元素 - 如何?

    我的 iPhone 应用程序中有一个简单的表单 该表单通过 IB 和典型接线进行布局和管理 即我不是以编程方式创建此表单 仅当设置了特定首选项时才应显示其中一个字段 及其关联标签 I could在这种情况下 将字段和标签的 alpha 设置
  • PHP 摘要验证、注销

    有没有办法注销在 php ini 中完成的摘要身份验证 我尝试过 unset SERVER PHP AUTH USER 但它不会要求重新登录 我知道如果我关闭浏览器 它就会工作 这是我的功能 function login realm Res