
我有一个的网页,不想要直接暴露出来,但又不是什么重要的信息,所以想要加入一个简单的认证
主要是我不懂 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 KagurazakaNyaa 2021 年 7 月 26 日 nginx 那里套一层 http_basic 就好了 |
2 jingslunt 2021 年 7 月 26 日 |
3 ThirdFlame 2021 年 7 月 26 日 一般来说是在 apache nginx 等 web 中间件做。 如果非要在 php 做,也有办法 ob_start ob_end_flush 了解下 |
4 shansing 2021 年 7 月 26 日 你这种方式永远不能阻止页面发送给客户端。建议是在 Web 服务器程序(如 Nginx 或 Apache )那里做认证。如果你坚持要用 PHP 做,可以这样修改: auth.php 文件里去掉这行: > print "Welcome to the private area!"; 将 index.html 更改为 index.php (重命名,以及替换所有用到这个 URL 的地方),在文件最开始加入这句: > <?php require 'auth.php'; ?> 这样也能实现你想要的效果。 |
5 crab 2021 年 7 月 26 日 搜索关键字:php 为任意页面设置密码访问 |
6 SSang OP 感谢各位,是我想复杂了,在 nginx 做是个好办法 |