我有一个的网页,不想要直接暴露出来,但又不是什么重要的信息,所以想要加入一个简单的认证
主要是我不懂 html/js/php 啥的,都是 copy 别人的代码,所以希望能尽量简单点
目前我的做法
index.html 里面调用 php
<html lang="ch">
<head>
...
</head>
<body>
<script type="text/javascript" src="auth.php"></script>
<div class="center">
<div class="box1">
<h4><a href="http://www.a.com:8081/">a site</a></h4>
</div>
</div>
</body>
</html>
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header("WWW-Authenticate: Basic realm=\"My Realm\"");
header("HTTP/1.0 401 Unauthorized");
print "invalid credentials!\n";
exit;
} else {
if (($_SERVER['PHP_AUTH_USER'] == 'admin') && ($_SERVER['PHP_AUTH_PW'] == 'admin')) {
print "Welcome to the private area!";
} else {
header("WWW-Authenticate: Basic realm=\"My Realm\"");
header("HTTP/1.0 401 Unauthorized");
print "invalid credentials!\n";
exit;
}
}
?>
这样只能实现一个假的认证,输入密码错误会一直返回 401,但实际上页面已经发送给客户端了,F12 就可以看到。想问一下要怎么修改能让他不认证的情况无法显示页面
1
XiLingHost 2021-07-26 11:43:49 +08:00
nginx 那里套一层 http_basic 就好了
|
2
jingslunt 2021-07-26 11:59:42 +08:00
|
3
ThirdFlame 2021-07-26 12:42:06 +08:00
一般来说是在 apache nginx 等 web 中间件做。 如果非要在 php 做,也有办法 ob_start ob_end_flush 了解下
|
4
shansing 2021-07-26 12:46:13 +08:00
你这种方式永远不能阻止页面发送给客户端。建议是在 Web 服务器程序(如 Nginx 或 Apache )那里做认证。如果你坚持要用 PHP 做,可以这样修改:
auth.php 文件里去掉这行: > print "Welcome to the private area!"; 将 index.html 更改为 index.php (重命名,以及替换所有用到这个 URL 的地方),在文件最开始加入这句: > <?php require 'auth.php'; ?> 这样也能实现你想要的效果。 |
5
crab 2021-07-26 12:47:37 +08:00
搜索关键字:php 为任意页面设置密码访问
|
6
SSang OP 感谢各位,是我想复杂了,在 nginx 做是个好办法
|