You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于User-Agent的PHP页面跳转问题求助(代码无效)

解决PHP User-Agent 跳转逻辑问题

嘿,我看了你的代码,问题主要出在逻辑判断和strpos()的使用上,咱们一步步来修正:

首先说核心问题:你想要的是当浏览器UA不等于自定义值时跳转,但原代码的逻辑是「找到自定义UA就跳转」,完全搞反了;另外,strpos()返回匹配位置的数字(比如匹配到开头会返回0),直接放在if()里会被当成false,导致这种情况被误判。

下面是修正后的完整代码,还加了一些严谨性处理:

<?php
// 先处理User-Agent不存在的情况,避免Undefined index报错
$userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
$customUA = 'MyCustomUserAgent';

// 严格判断:当未找到自定义UA时执行跳转
if (strpos($userAgent, $customUA) === false) {
    // 开启输出缓冲,防止之前有隐性输出导致header失效
    ob_start();
    header("Location: http://google.com/");
    // 跳转后立刻终止脚本,避免后续代码执行
    exit();
}
?>

几个关键的优化点:

  • 逻辑修正:用strpos(...) === false来判断「未匹配到自定义UA」,完全符合你的需求
  • 容错处理:用isset()检查$_SERVER['HTTP_USER_AGENT'],有些服务器环境可能不会提供这个变量,避免报错
  • 避免header失效:加ob_start()开启输出缓冲,确保跳转前没有任何输出(包括空格、换行这类隐性输出)
  • 规范命名:把变量改成驼峰式userAgent,更符合PHP的编码习惯

补充:如果需要完全匹配UA

如果你要的是浏览器UA和自定义值完全一致(而不是包含关系),可以直接用全等比较:

if ($userAgent !== $customUA) {
    header("Location: http://google.com/");
    exit();
}

内容的提问来源于stack exchange,提问作者Emiljan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:53:41