我最近开始学习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
...
我知道这样做的“正确”方法是这样的:
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 strtotime困境 - php
有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…PHP-全局变量的性能和内存问题 - php
假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…php-casperjs获取内部文本 - php
我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…PHP-从最后一个循环中删除逗号 - php
我在循环时有一个PHP,如果是最后一个循环,我想从,中删除最后一个逗号echo '],'; while($ltr = mysql_fetch_array($lt)){ echo '['; echo $ltr['days']. ' ,'. $ltr['name…PHP Laravel从另一个驱动器读取文件 - php
我目前正在学习Laravel。我想知道是否有一种方法可以在Laravel中使用Storage::从另一个硬盘访问文件(使用Windows)。例如,我在驱动器C:上安装了带有Laravel的Xampp,但是我想访问网站目录之外的E:上的文件。我试过使用Storage::files('E:')和File::files('E:…