gpt4 book ai didi

PHP 身份验证(初学者)

转载 作者:行者123 更新时间:2023-12-04 16:45:00 26 4
gpt4 key购买 nike

我最近开始学习 PHP。我做了一个基本的网站,基本上想给它密码。如果有人能告诉我为什么这不起作用,我将不胜感激。我知道它不起作用,因为我已经尝试过了;我只是不明白为什么。

<?php
$user='user';
$pass='pass';

header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm='.'hello');
if($_SERVER['PHP_AUTH_USER']==$user && $_SERVER['PHP_AUTH_PW']==$pass)
echo 'Authorized';
else
exit('Exiting');
?>
...
REST OF WEBSITE
...

我知道“正确”的做法是这样的:

<?php
if(!isset($_SERVER['PHP_AUTH_USER']))
{
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm='.'hello');
exit('Exiting');
}
else
{
$user='user';
$pass='pass';
if($_SERVER['PHP_AUTH_USER']==$user && $_SERVER['PHP_AUTH_PW']==$pass)
echo 'Authorized';
else
{
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm='.'hello');
exit('Exiting');
}
}
?>
REST OF WEBSITE

如果有人至少能为我指出正确的方向,我将不胜感激。

最佳答案

当使用 HTTP 身份验证时,您的脚本会运行两次:第一次,$_SERVER['PHP_AUTH_USER'] 未设置,您必须告诉浏览器该页面需要身份验证。然后浏览器重新加载页面,不过这次 $_SERVER['PHP_AUTH_USER'] 包含用户提供的用户名和 $_SERVER['PHP_AUTH_PW'] 密码。如果这与正确的凭据($user$pass)相匹配,您将继续将页面发送到浏览器。

您的代码不会区分这两种情况,因此它会告诉浏览器它需要用户名和密码,即使已经发送了正确的凭据也是如此。

关于PHP 身份验证(初学者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8770885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com