php怎么判断是否被script引用

不及物动词 其他 117

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在PHP中,可以通过$_SERVER[‘HTTP_REFERER’]来获取当前页面的来源URL。根据这个值,我们可以判断是否被script引用。具体的判断逻辑如下:

    “`php
    if(isset($_SERVER[‘HTTP_REFERER’])) {
    $referer = $_SERVER[‘HTTP_REFERER’];
    $isScript = strpos($referer, ‘.js’) !== false;
    if($isScript) {
    echo “当前页面被script引用”;
    } else {
    echo “当前页面没有被script引用”;
    }
    } else {
    echo “无法获取来源URL”;
    }
    “`

    上述代码首先通过$_SERVER[‘HTTP_REFERER’]获取当前页面的来源URL,然后使用strpos函数判断来源URL中是否包含”.js”,如果包含则表示当前页面被script引用。如果$_SERVER[‘HTTP_REFERER’]不存在,则无法判断是否被script引用。

    需要注意的是,$_SERVER[‘HTTP_REFERER’]的值是由客户端提供的,因此不可靠。有些浏览器和网络配置可能会禁止提供Referer信息,导致无法准确判断页面是否被引用。因此,这种判断方式并不是绝对可靠的。如果需要更精确的判断,可以考虑其他方法,如使用验证码或者加入授权检查等。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在PHP中,可以使用`$_SERVER[‘HTTP_USER_AGENT’]`来获取当前访问页面的用户代理(User Agent),然后判断是否被脚本引用。用户代理是一个字符串,用于标识访问页面的用户的客户端设备和浏览器信息。根据用户代理的不同,可以判断页面是被真实用户访问还是被脚本引用。

    以下是判断是否被脚本引用的方法:

    1. 检查用户代理是否包含常见的脚本引擎信息,如”curl”、”wget”、”python”等。这些用户代理很可能是脚本引用页面时使用的。

    “`php
    $userAgent = $_SERVER[‘HTTP_USER_AGENT’];

    if (strpos($userAgent, ‘curl’) !== false ||
    strpos($userAgent, ‘wget’) !== false ||
    strpos($userAgent, ‘python’) !== false) {
    // 被脚本引用
    }
    “`

    2. 检查用户代理是否包含常见的浏览器信息,如”Mozilla”、”Chrome”、”Safari”等。这些用户代理可能是真实用户使用浏览器访问页面时使用的。

    “`php
    $userAgent = $_SERVER[‘HTTP_USER_AGENT’];

    if (strpos($userAgent, ‘Mozilla’) !== false ||
    strpos($userAgent, ‘Chrome’) !== false ||
    strpos($userAgent, ‘Safari’) !== false) {
    // 不被脚本引用
    }
    “`

    3. 检查`$_SERVER[‘HTTP_REFERER’]`是否存在,且是否为空。HTTP Referer是指向当前页面的上一页的URL。如果存在且不为空,那么页面很可能是被真实用户从其他页面跳转过来访问的。

    “`php
    if (isset($_SERVER[‘HTTP_REFERER’]) && $_SERVER[‘HTTP_REFERER’] !== ”) {
    // 不被脚本引用
    }
    “`

    4. 根据IP地址进行判断。可以使用`$_SERVER[‘REMOTE_ADDR’]`获取访问页面的客户端IP地址。通过查询IP地址所属的地理位置、IP归属等信息,可以判断是否是脚本引用页面。

    “`php
    $ip = $_SERVER[‘REMOTE_ADDR’];

    // 根据IP地址进行判断
    “`

    5. 结合以上几种方法进行综合判断。可以根据用户代理、来源URL、IP地址等信息进行多个条件的判断,增加判断的准确性。

    实际上,由于脚本引用页面的方式多种多样,无法百分之百地判断是否被脚本引用。以上方法只是一些常见的判断方式,可以根据具体情况进行调整和补充。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在 PHP 中,判断当前脚本是否被其他脚本文件引用可以通过一些特定的方法和操作流程来实现。

    一种常见的方法是使用`$_SERVER`全局变量中的`HTTP_REFERER`。`HTTP_REFERER`记录了当前页面的来源页面的 URL 地址,当一个 PHP 脚本文件被其他脚本文件引用时,`HTTP_REFERER`会被设置为引用页面的 URL 地址。因此,可以通过检查`$_SERVER[‘HTTP_REFERER’]`是否存在来判断当前脚本是否被引用。例如:

    “`php
    if(isset($_SERVER[‘HTTP_REFERER’])){
    // 当前脚本被其他脚本引用
    } else {
    // 当前脚本未被其他脚本引用
    }
    “`

    需要注意的是,`HTTP_REFERER`可以被伪造,因此这种方法并不是完全可靠的。

    另一种方法是使用`debug_backtrace()`函数。`debug_backtrace()`函数返回一个数组,包含了当前脚本被调用的函数和方法的调用栈信息。如果当前脚本未被其他脚本引用,调用栈的长度将为1,即只有一个元素。如果当前脚本被其他脚本引用,调用栈的长度将大于1。可以通过获取调用栈的长度来判断当前脚本是否被引用。例如:

    “`php
    $backtrace = debug_backtrace();
    if(count($backtrace) > 1){
    // 当前脚本被其他脚本引用
    } else {
    // 当前脚本未被其他脚本引用
    }
    “`

    这种方法相对较可靠,但是在一些特定情况下可能会出现异常结果,例如在某些 PHP 配置中禁止了`debug_backtrace()`函数。

    总结起来,通过检查`$_SERVER[‘HTTP_REFERER’]`变量或使用`debug_backtrace()`函数可以判断当前 PHP 脚本是否被其他脚本引用。但是需要注意两种方法都有一定的局限性,可能并不能 100% 可靠判断是否被引用。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部