360浏览器header的Location跳转无效的解决办法

栏目:建站技术 2020-10-30

在百度里搜索这个问题的答案,有的说是BOM头导致的问题,有的点是因为之前有输出语句导致的问题,有的话是Location和后面的:(冒号)之间有空格导致的问题,还有的话是因为没有加上exit()导致的问题,但是这几项都排除之外,用360浏览器8.1版本的仍然会有这种情况的发生,那么可以接着继续往下看

如果用360浏览器8.1版本的打开 “你的域名/admin/test.php”这样一个网页,源代码如下:

<?php

function getBrowser(){
    if(empty($_SERVER['HTTP_USER_AGENT'])){
        return 'robot!';
    }
    if( (false == strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')) && (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident')!==FALSE) ){
        return 'MSIE 11.0';
    }
    if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 10.0')){
        return 'MSIE 10.0';
    }
    if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 9.0')){
        return 'MSIE 9.0';
    }
    if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0')){
        return 'MSIE 8.0';
    }
    if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 7.0')){
        return 'MSIE 7.0';
    }
    if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 6.0')){
        return 'MSIE 6.0';
    }
    if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Edge')){
        return 'Edge';
    }
    if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Firefox')){
        return 'Firefox';
    }
    if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Chrome')){
        return 'Chrome';
    }
    if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Safari')){
        return 'Safari';
    }
    if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Opera')){
        return 'Opera';
    }
    if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'360SE')){
        return '360SE';
    }
    //微信浏览器
    if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MicroMessage')){
        return 'MicroMessage';
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>管理中心</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
  <body>
    <form name="main_form" method="POST" action="test.php" enctype="multipart/form-data">
          <input type="file" name="picurl" />
          <input type="submit" class="button" value=" 确定 " />
        </form>
    </body>
</html>


上面的源代码说明:
一:fomr表单中有file类型的input
二:form设置了enctype="multipart/form-data"的话
三:当前test.php文件在admin这个目录下面


点击确定按钮之后的问题描述?
第一次点击不跳,仍然在当前页,第二次点击时提示“hi,真不巧,网页走丢了”,这个问题用其它的比如IE、谷歌、火狐浏览器测试没有发现问题,360其它浏览器未经测试


如何解决header的Location跳转无效或失败的问题,下面有两个方法?
一:将当前文件移到放在根目录下面的,移动到根目录下面跳转将正常了,很奇怪
二:如果当前表单不需要上传文件的话,那么去掉form的enctype="multipart/form-data"这个设置
如果需要上传文件,那么需要作下面的判断处理
switch (getBrowser()) {
    case 'MSIE 7.0':
    case 'MSIE 8.0':
    case 'MSIE 9.0':
        echo "<script>location.href='".$location."'</script>";
        break;
    default:
        header("Location:".$location);
        break;
}
exit();

360浏览器不同版本通过getBrowser()获取的结果对应关系:

8.1版本->MSIE 7.0
9.1版本->MSIE 8.0
10.1版本->MSIE 9.0

注意不管是360的哪个版本的,如果test.php文件放在根目录下面的话,那么getBrowser()得到的结果确变成了Chrome了,很奇怪

相关阅读

测试document与window与body对象的heigh…

2020-10-1027

&lt;HTMLxmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;测试document与window与body对象的height与scrollTop方法返回值的区别测试document与window与body对象的height与scrollTop方法返回值的区别$("#btn").click(function…

手机访问电脑网时自动跳转代码

2020-10-1049

4G降临,移动网站已经一发不可收拾,pc端和移动端官网并存。如何让别人访问你的pc端的官网直接跳转到移动端的网站呢?各位看官,小二上代码!来了!varurl=window.location.href;varurl_match=/vit=1$/i;if(!url.match(url_match)){if(navigator.userAgent.match(/(…

帝国CMS-采集关键的经验总结

2020-10-1025

采集关键的几个步骤一:先建好栏目二:增加采集节点(需要选择栏目)三:录入节点名称四:如果有很多页,只需录入采集页面地址方式二中的内容地址为https://www.sznest.net/news.asp?big_class_id=3&amp;page=[page]页码从1到多少页之间、间隔倍数为1(这个多少页即被采集的网站的实际页数,注意这里修改后,在采集页面…

DOS命令批量获取文件夹内的名称及批量修改文件夹内名称

2020-10-10174

批量提取文件夹内文件名一:在文件夹内新建一个文本文件,名称随便起,这里为了演示,暂时起名叫!!!.TXT,放入下面的内容,!!!!!!.TXT这个是被生成的文件,用于存放文件夹内所有的文件名用的DIR*.*/B&gt;!!!!!!.TXT二:将!!!.TXT文件名的后缀改成.bat,然后双击运行,生成了!!!!!!.TXT文件三:打开!!!!!!.TXT文件…

如何修改文件默认打开方式为指定的程序?

2023-01-1277

一:“开始菜单”,在里面点击右侧的“运行”选项,输入“regedit”命令,打开注册表修改默认的打开方式需要在注册表中操作,在完成这个操作之前,我们先了解一下注册表中的以下的三个概念项:即左侧的类似于文件夹一样的图标数值名称:即点击“项”之后出现在右侧部分的左边的那个名称数值数据:即点击“项”之后出现在右侧部分的右边的那个数据了解了以上的三个概念之后,接下来…

小程序的下单与支付的业务流程

2020-10-10220

1:小程序携带商品信息调用第三方服务器的下单API2:第三方服务器下单API对小程序带来的商品作库存量检测3:如果检测通过,第三方服务器就会保存这个订单并且告之小程序下单成功4:小程序调用第三方服务器的支付api5:第三方服务器API调用微信的预订单API[WxPayApi::unifiedOrder](注意第三方服务器是无法完成支付的,这个订单实际是在微信…