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

时间:2011-09-12 13:21:17

标签: php apache authentication

如何在我们尝试登录路由器时以相同的方式在php中创建用户身份验证。

enter image description here

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

这是什么类型的身份验证。如何在php中编写代码。

注意:我必须完全控制我运行的服务器。那么有没有需要安装的特殊模块我能做到。

3 个答案:

答案 0 :(得分: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 Unauthorized。浏览器会看到此标题以及您的WWW-Authenticate标题,并提示用户。完成此操作后,您就可以在$_SERVER['PHP_AUTH_USER']以及$_SERVER['PHP_AUTH_PW']中看到用户名和密码。

您应该知道,如果您使用的是基本身份验证,则会向用户名/密码发送plaint-text。如果您想要任何类型的安全性,则必须使用HTTPS。此外,根据您的应用程序,您将看到无法有效“注销”。大多数浏览器都会记住整个会话的用户名/密码,并在每次后续请求时发送它。

答案 1 :(得分:0)

这是基本的http身份验证。你可以在php.net页面找到一个教程:http://www.php.net/manual/en/features.http-auth.php

它基本上是一个http标头,您必须发送到浏览器。 http服务器(apache / nginx)会像之后的任何其他$ _SERVER参数一样将userdata转发给php。

答案 2 :(得分:-1)

查看这篇文章:http://en.wikipedia.org/wiki/.htaccess它与PHP没有任何关系。

您需要两个文件,.htaccess和.htpasswd,您可以在此处生成:http://www.webmaster-toolkit.com/htaccess-generator.shtml