PHP用户身份验证如路由器登录

4

如何在PHP中创建用户身份验证,就像我们尝试登录路由器时一样。

enter image description here

当我输入例如 www.example.com/portal 的网址时,应该会出现像上面图片中询问用户名和密码的提示。

这是什么类型的身份验证?如何在PHP中编写代码实现?

注意:我有完全控制所运行的服务器。所以是否需要安装特殊模块,我可以自己操作。

2个回答

3
这被称为基本身份验证。请参考文档中的以下示例:
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
} else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}
?>

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

基本上,您需要发送正确的状态代码为401未经授权的头文件。浏览器会看到此信息以及您的WWW-Authenticate头文件,并提示用户输入凭据。完成后,您就可以在$_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW']中看到用户名和密码。
但是,请注意,如果使用基本认证,则用户名/密码以明文形式发送。 如果您想要任何安全性,则必须使用HTTPS。 此外,根据您的应用程序,您将发现没有有效的“注销”方式。 大多数浏览器会记住整个会话期间的用户名/密码,并将其随每个后续请求一起发送。

哪种身份验证方式更好?基本身份验证还是表单POST? - Jeyanth Kumar
@Jeyanth,这完全取决于你的应用程序。基本身份验证已内置于浏览器中,被认为是一种非常纯粹的身份验证方式。用户会熟悉这种方式。然而,由于无法自定义外观和感觉,以及注销和其他问题,大多数网站将构建一个登录表单。 - Brad

0

这是基本的HTTP身份验证。您可以在php.net页面上找到教程:http://www.php.net/manual/zh/features.http-auth.php

它基本上是一个HTTP头,您必须将其发送到浏览器。 HTTP服务器(apache/nginx)随后将用户数据转发给PHP,就像任何其他$ _SERVER参数一样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接