php 如何区分内部调用函数
导读:在PHP中,可以使用debug_backtrace( 函数来获取当前代码的调用堆栈信息,从而区分内部调用函数。 在PHP中,我们可以通过检查$_SERVER['REQUEST_METHOD']和$_SERVER['HTTP_REFERER'...
在PHP中,可以使用debug_backtrace()
函数来获取当前代码的调用堆栈信息,从而区分内部调用函数。
在PHP中,我们可以通过检查$_SERVER['REQUEST_METHOD']
和$_SERVER['HTTP_REFERER']
来区分内部调用和外部调用。
1、$_SERVER['REQUEST_METHOD']
:这个变量会告诉我们当前请求的HTTP方法是什么,quot;
GET"、"POST"等。
2、$_SERVER['HTTP_REFERER']
:这个变量会告诉我们当前请求是从哪个页面发出的,如果这个值是空的,那么我们可以认为这是一个外部调用。
下面是一个示例代码:
?php if($_SERVER['REQUEST_METHOD'] == 'POST') { if($_SERVER['HTTP_REFERER'] == 'http://www.yourwebsite.com') { echo 'This is an internal call'; } else { echo 'This is an external call'; } } else { echo 'This is not a POST request'; } ?>
在这个代码中,我们首先检查请求是否是一个POST请求,如果是,我们再检查$_SERVER['HTTP_REFERER']
是否是我们自己的网站的URL,如果是,那么我们可以认为这是一次内部调用,否则就是外部调用。
相关问题与解答:
Q1: 如果我想在GET请求中也实现这个功能,我应该怎么修改代码?
A1: 你只需要添加一个额外的条件来检查$_SERVER['REQUEST_METHOD']
是否为’GET’即可,下面是修改后的代码:
?php if($_SERVER['REQUEST_METHOD'] == 'POST' || $_SERVER['REQUEST_METHOD'] == 'GET') { if($_SERVER['HTTP_REFERER'] == 'http://www.yourwebsite.com') { echo 'This is an internal call'; } else { echo 'This is an external call'; } } else { echo 'This is not a POST or GET request'; } ?>
Q2: 如果我想忽略所有从我们自己的网站发出的请求,无论它们是什么类型的请求,我应该怎么修改代码?
A2: 你只需要移除检查$_SERVER['REQUEST_METHOD']
的条件即可,下面是修改后的代码:
?php if($_SERVER['HTTP_REFERER'] == 'http://www.yourwebsite.com') { echo 'This is an internal call'; } else { echo 'This is an external call'; } ?>
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: php 如何区分内部调用函数
本文地址: https://pptw.com/jishu/664653.html