Home  >  Article  >  Backend Development  >  empty($_SERVER['HTTP_VIA']) or exit('Access Denied'); 这行php什么作用?

empty($_SERVER['HTTP_VIA']) or exit('Access Denied'); 这行php什么作用?

WBOY
WBOYOriginal
2016-06-06 20:17:571606browse

看别人的防攻击代码中有这样一行:

<code>empty($_SERVER['HTTP_VIA']) or exit('Access Denied');</code>

有什么作用?

回复内容:

看别人的防攻击代码中有这样一行:

<code>empty($_SERVER['HTTP_VIA']) or exit('Access Denied');</code>

有什么作用?

楼主可能疑惑的是or的问题
这种写法,是php的一种常用的程序手法
or是或的意思,A or B只要AB有一个满足true,它就会立马执行后面的语句。
当A不为真后,or还不能当下就立即断定,它还需要接着往下判断第二个条件B,结果B直接exit了,这样看起来要比if语句简短明了。换句话说,若A为真,那么就不会执行Access Denied了

其实,主要利用了如下几点:

  1. or具备从左向右的结合性

  2. or条件中,只有有一个条件为真,那么剩余的条件就不判断了,直接执行大括弧里的代码段

  3. 这种写法比if(empty(xxx)){ xxxx }更好看些

如有错误,欢迎指正

防止用户通过正确的方式运行到这段程序。

$_SERVER['HTTP_VIA'] 是代理服务器地址,也就是说,如果用户是通过代理访问的,就会直接退出,不会继续执行下去。这是保证安全的一项措施。

代理服务器ip不为空时退出当前程序,并输出Access Denied,防止外部攻击。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn