如果用户代理使用PHP等于变量,则标题重定向

时间:2019-02-07 13:58:34

标签: php redirect header user-agent

我有一个脚本,如果用户代理等于变量,则该脚本必须重定向到403页面,但如果不是-必须显示正常页面。与此相反,脚本仅显示空白页,仅此而已。请帮助我解决我的问题或我做错了。

这是脚本:

<?php

 //-- Get user agent
 //-- Thanks @creditosrapidos10min for hint about strtolower() 
 $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);

 //-- BadBot variable
 $Baiduspider = stripos($useragent, "Baiduspider");
 $DotBot = stripos($useragent, "DotBot");

 //-- BadBot constant
 $BADBOT = ($Baiduspider||$DotBot);

if ($agent == $BADBOT){

    header("Location: ohno/403.php");
    exit;


} else { ?>

 Display home page

 <?php }?>

4 个答案:

答案 0 :(得分:2)

请尝试使用$ HTTP_SERVER_VARS而不是$ _SERVER,以免全局变量出现问题。

如果没有,请尝试使用strtolower:

StackActions.reset({
  index: 0,
  actions: [NavigationActions.navigate({ routeName: "Login" })],
});

答案 1 :(得分:1)

您在Get mark_deling_test2/_search { “query”: { “bool”: { “must”: { “query_string”: { “query”: “nut*“, “fields”: [“Name”, “Description”, “keywords”] } }, “filter”: { “term”: { “groups”: “US-IBO” } } } } } 上使用stripos,但尚未定义$useragent,仅定义了$useragent。尝试更正此问题,然后重试。

答案 2 :(得分:1)

我认为您使用的是$user而不是$user_agent

根据php手册php manual on stipos,您应该使用Triple =,例如===。

这里是应有的示例。

<?php
    //-- Get user agent
    //-- Thanks @creditosrapidos10min for hint about strtolower() 
    $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);

    //-- BadBot variable
    $Baiduspider = stripos($useragent, "Baiduspider");
    $DotBot = stripos($useragent, "DotBot");

    //-- BadBot constant
    $BADBOT = ($Baiduspider||$DotBot);

    if ($useragent === $BADBOT){

    header("Location: ohno/403.php");
    exit;

    } else { ?>

    Display home page

    <?php }
    ?>

答案 3 :(得分:0)

在我的浏览器上工作!也许其代码不是您的浏览器?我正在使用歌剧浏览器 enter image description here