我们已经准备好了,你呢?

我们与您携手共赢,为您的企业形象保驾护航!

当前位置: 首页 > 百科知识问答 > php 如何区分内部调用函数

在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';    }?>
免责声明:本站内容(文字信息+图片素材)来源于互联网公开数据整理或转载,仅用于学习参考,如有侵权问题,请及时联系本站删除,我们将在5个工作日内处理。联系邮箱:chuangshanghai#qq.com(把#换成@)

我们已经准备好了,你呢?

我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

132-7207-3477

上班时间

周一到周五 09:00-18:00

二维码
线