簡體   English   中英

PHP重定向不起作用(基於用戶代理字符串)

[英]PHP redirect not working (based on user agent string)

我正在運行以下重定向腳本:

<?php
$badAgents = array('Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0');
if(in_array($_SERVER['HTTP_USER_AGENT'],$badAgents)) {
require("1.php");
} else {
require("2.php");
}
?>

但是,每個訪問者都將被發送到“ 2.php”,無論其用戶代理如何。 例如,我進入Firefox,進入2.php,進入Internet Explorer,看到2.php。

請有人指導我我做錯了什么?

感謝您的時間

檢查我們的邏輯。

這是您正在使用的偽邏輯:

  • 如果用戶的用戶代理錯誤,則需要1.php。
  • 如果用戶沒有不良的用戶代理,則需要2.php。

除非用戶使用完全正確的Firefox版本訪問您的頁面,否則您使用的代碼將不會使用1.php。

我還建議您按以下方式更改代碼:

if (stripos($_SERVER['HTTP_USER_AGENT'], 'firefox') === false) {
    require '2.php';
} else {
    require '1.php';
}

您的字符串有點長才能匹配。 最好只過濾一個短而顯式的字符串,例如Firefox

<?php
if(stripos($_SERVER['HTTP_USER_AGENT'], 'firefox') !== false)) {
    require("1.php");
} else {
    require("2.php");
}
?>

然后,您的更改將比“規則”匹配大。

第二個是像get_browser這樣的函數可以解析User代理,您可以得到更好的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM