虽然我意识到每种语言都有自己的缩进惯例,但我不禁对最近发现的东西感到恼火.请考虑PHP手册中的以下代码:
switch ($i) {
case "apple":
echo "i is apple";
break;
case "bar":
echo "i is bar";
break;
case "cake":
echo "i is cake";
break;
}
Run Code Online (Sandbox Code Playgroud)
请注意,每个案例都是从switch语句缩进的.这是有道理的,因为代码更容易阅读,并且块的主体包含在其中的一个级别.
但是,当我在JSLint中测试等效的JavaScript switch语句时:
switch (i) {
case "apple":
alert("i is apple");
break;
case "bar":
alert("i is bar");
break;
case "cake":
alert("i is cake");
break;
}
Run Code Online (Sandbox Code Playgroud)
...它显示一个错误,告诉我它应该像这样:
switch (i) {
case "apple":
alert("i is apple");
break;
case "bar":
alert("i is bar");
break;
case "cake":
alert("i is cake");
break;
}
Run Code Online (Sandbox Code Playgroud)
这似乎违反直觉,因为现在每个案例都与交换机块本身内联.我无法想象为什么这会被认为更好,更不用说触发错误了.
JSLint是错误的,还是仅仅遵循惯例?如果后者是真的,为什么惯例不能缩小以澄清?
使用以下命令.htaccess,我能够成功限制对具有正确用户名/密码的用户以及来自特定 IP 地址的用户的访问:
AuthType Basic
AuthName "Please enter your password"
AuthUserFile /path/to/.htpasswd
Require valid-user
Order deny,allow
Deny from all
Allow from 123.123.123.123
Satisfy Any
Run Code Online (Sandbox Code Playgroud)
这适用于许多不同的服务器,但是,今天我遇到了一个服务器,它不能100% 工作。用户名/密码正确的用户可以登录,但指定IP的用户则不允许登录,并强制输入密码。
是否有什么因素httpd.conf可能会阻止 IP 白名单发挥作用?我尝试了多种变体并继续得到相同的结果。所有服务器都是 Linux 上的 Apache。