头重定向如果用户代理使用PHP变量等于

问题描述 投票:1回答:4

我有一个脚本,如果用户代理等于变量,但如果不是必须重定向到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 }?>
php redirect header user-agent
4个回答
1
投票

我想你用$user代替$user_agent的。

而根据PHP手册php manual on stipos你应该使用三联=像===。

下面是应该的一个例子。

<?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 }
    ?>

2
投票

尝试用$ HTTP_SERVER_VARS代替$ _ SERVER,为了不与全局变量的问题。

如果没有,尝试用strtolower:

<?php

 //-- Get user agent
 $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 }?>

1
投票

您正在使用stripos$useragent但是你有没有定义$useragent,你只定义$agent。尝试更正此,再次尝试。


0
投票

工作在我的浏览器!也许它不是代码的浏览器?我使用Opera浏览器enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.