Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检测iPhone浏览器_Php_Javascript_Iphone_Html_Mobile Safari - Fatal编程技术网

Php 检测iPhone浏览器

Php 检测iPhone浏览器,php,javascript,iphone,html,mobile-safari,Php,Javascript,Iphone,Html,Mobile Safari,如果访问者使用iphone(无论是什么浏览器,可能是iphone Safari、iphone for Opera等),是否有脚本可以检测 然后将关闭我的一些JavaScript 谢谢… <script language="javascript" type="text/javascript"> //This redirects iPhone users to the iPhone-friendly site if ((navigator.userAgent.index

如果访问者使用iphone(无论是什么浏览器,可能是iphone Safari、iphone for Opera等),是否有脚本可以检测

然后将关闭我的一些JavaScript

谢谢…


<script language="javascript" type="text/javascript"> 
    //This redirects iPhone users to the iPhone-friendly site
    if ((navigator.userAgent.indexOf('iPhone') != -1) ||
    (navigator.userAgent.indexOf('iPod') != -1)) {
        document.location = "http://i.yoursite.com";
    }
//这会将iPhone用户重定向到iPhone友好的站点 if((navigator.userAgent.indexOf('iPhone')!=-1)|| (navigator.userAgent.indexOf('iPod')!=-1)){ document.location=”http://i.yoursite.com"; }


此脚本在userAgent中检查iPhone或iPod,然后执行操作。试试看。

在网上搜索有两种常见的方法来实现这一点。 我最喜欢的是PHP,它是如此干净?哇D

在PHP中,您可以编写

<?php

function isIphone($user_agent=NULL) {
    if(!isset($user_agent)) {
        $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
    }
    return (strpos($user_agent, 'iPhone') !== FALSE);
}

if(isIphone()) {
    header('Location: http://www.yourwebsite.com/phone');
    exit();
}

// ...THE REST OF YOUR CODE HERE

?>
var agent = navigator.userAgent;
var isIphone = ((agent.indexOf('iPhone') != -1) || (agent.indexOf('iPod') != -1)) ;
if (isIphone) {
    window.location.href = 'http://www.yourwebsite.com/phone';
}
希望有帮助


PK

虽然我喜欢这里的答案,但我认为最好使用以下内容


这是一个.htaccess替代方案,这意味着为您提供了更多处理php的空间:)希望它能有所帮助

传统观点认为,iOS设备有一个用于Safari的用户代理和一个用于UIWebView的用户代理。这种假设是不正确的,因为iOS应用程序可以并且确实自定义其用户代理。这里的罪魁祸首是Facebook

比较iOS设备中的这些用户代理字符串:

# iOS Safari
iPad: Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safari/7534.48.3
iPhone: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3

# UIWebView
iPad: Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/98176
iPhone: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Mobile/8B117

# Facebook UIWebView
iPad: Mozilla/5.0 (iPad; U; CPU iPhone OS 5_1_1 like Mac OS X; en_US) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.1.1;FBBV/4110.0;FBDV/iPad2,1;FBMD/iPad;FBSN/iPhone OS;FBSV/5.1.1;FBSS/1; FBCR/;FBID/tablet;FBLC/en_US;FBSF/1.0]
iPhone: Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; ru_RU) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.1;FBBV/4100.0;FBDV/iPhone3,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/5.1.1;FBSS/2; tablet;FBLC/en_US]
请注意,在iPad上,Facebook UIWebView的用户代理字符串包括“iPhone”

用JavaScript识别iPhone的老方法:

IS_IPHONE = navigator.userAgent.match(/iPhone/i) != null) || (navigator.userAgent.match(/iPod/i) != null);
IS_IPAD = navigator.userAgent.match(/iPad/i) != null;
IS_IPHONE = (navigator.userAgent.match(/iPhone/i) != null) || (navigator.userAgent.match(/iPod/i) != null);
if (IS_IPAD) {
  IS_IPHONE = false;
}
如果你用这种方法来检测iPhone,那么如果一个用户在iPad上来自Facebook,你最终会发现iPhone是真的。这可能会造成一些奇怪的行为

用JavaScript识别iPhone的正确方法:

IS_IPHONE = navigator.userAgent.match(/iPhone/i) != null) || (navigator.userAgent.match(/iPod/i) != null);
IS_IPAD = navigator.userAgent.match(/iPad/i) != null;
IS_IPHONE = (navigator.userAgent.match(/iPhone/i) != null) || (navigator.userAgent.match(/iPod/i) != null);
if (IS_IPAD) {
  IS_IPHONE = false;
}

我们声明IPHONE在iPad上是假的,以掩盖奇怪的Facebook UIWebView iPad用户代理。这是用户代理嗅探如何不可靠的一个示例。自定义用户代理的iOS应用越多,用户代理嗅探问题就越多。如果您可以避免用户代理嗅探(提示:CSS媒体查询),请这样做。

稍后,间接回答这个问题,但我发现它很有用


<> P>而不是重定向移动用户,考虑使用响应CSS设计来向桌面和移动用户提供具有两种不同风格的相同内容。这有助于避免拆分和复制代码。您可以从头开始编写响应CSS,也可以使用预先打包的框架,如Twitter Bootstrap。

好的,让我知道您的情况。我已经用过好几次了,似乎找到了它。下一步是添加其他字符串,然后根据需要的功能为每个字符串添加操作。太好了。。。非常感谢您提供PHP脚本中的代码。似乎这是最好的解决方案,因为我想为不同的浏览器执行不同的任务,我想从服务器处理这些任务:我完全知道你的意思。我喜欢php。当用户右键单击源代码时,您将看不到用于对站点进行编程的任何代码。它也非常灵活。而且它很容易使用。所有代码都在服务器上处理,这是一个额外的好处。希望这有帮助。如果你需要更多的帮助。。。一定要让我知道。如果需要,可以调整此代码。事实上,您可以增强此代码以检查它是否是ipod。如果你需要帮助,一定要告诉我。还有,当你在这里的时候,把这篇文章标记为已回复,谢谢。因此,人们知道这是正确的答案,他们可以在您尝试时将其作为参考。谢谢你是的,我会在iPhone环境中测试后将其标记为正确答案:D,现在我仍然下载虚拟软件来测试它:)。。。非常感谢:我已经用我的测试仪测试过了,现在我也需要Ipad了。你能帮我编写代码吗?我认为响应式css不适合同时设计dekstop和mobile,因为我们希望在dekstop和mobile中显示的信息会有所不同。e、 我们在手机中没有太多的信息,这使得设计看起来很复杂。我认为响应式设计的目的是让网站在不同的显示屏上显示商品。OP不是为了重定向,而是为了避免运行脚本。
//Detect special conditions devices
$iPod    = stripos($_SERVER['HTTP_USER_AGENT'],"iPod");
$iPhone  = stripos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$iPad    = stripos($_SERVER['HTTP_USER_AGENT'],"iPad");
$Android = stripos($_SERVER['HTTP_USER_AGENT'],"Android");
$webOS   = stripos($_SERVER['HTTP_USER_AGENT'],"webOS");

//do something with this information
if( $iPod || $iPhone ){
    //browser reported as an iPhone/iPod touch -- do something here
}else if($iPad){
    //browser reported as an iPad -- do something here
}else if($Android){
    //browser reported as an Android device -- do something here
}else if($webOS){
    //browser reported as a webOS device -- do something here
}