PHP中如何检测iPad的方向?

3

你好,我想在php中检测ipad的方向,我知道我可以检测iPad,但如何检测方向呢?因为我想在我的画廊中显示x张纵向图片和x张横向图片,所以需要在php中进行检测,而不是在css中。

下面是我用来检测iPad的代码:

if(strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') !== FALSE) {

} else {

}

我在这个网站和Google上搜索了,但是没有找到任何有用的信息可以帮助你。
谢谢。
7个回答

4
当用户不同的持有方式改变iPad方向时,因此在PHP中注册它是没有意义的 - 当你的响应到达客户端时,它可能已经不同了。
如果需要进行任何无法在CSS中完成的管道(如加载不同的图像等),请在JavaScript中处理orientationchanged事件。可以参考:这里

@graham 那么就用JavaScript来实现,或者更好的方法是始终发送它,并包含一个CSS规则@media all and (orientation:landscape){ .portrait-only {display:none;}}以在其他情况下隐藏它。 - phihag

0

一种粗暴的方法是通过jQuery将方向更改存储在cookie中,并使用php中的$_COOKIE变量访问它。

但是,您仍需要JavaScript钩子来检测方向更改并可能重新加载页面。


0

这不是方向检测而是用户代理检测。它只能检测到正在浏览您页面的浏览器类型。


现代浏览器的用户代理字符串包含的内容远不止浏览器名称和版本,因此这种说法并不完全准确。 - phihag
这是iPad的用户代理字符串:"Mozilla/5.0(iPad; U; CPU OS 3_2 like Mac OS X; en-us)AppleWebKit/531.21.10(KHTML, like Gecko)Version/4.0.4 Mobile/7B334b Safari/531.21.10" 它在哪里显示您当前的设备方向? - Fredrik
它并不是。我指的是第二句话。一些用户代理列出插件、操作系统、机器架构等信息,因此“浏览器类型”并不完全准确描述HTTP用户代理。 - phihag

0
设备方向是动态的 - 用户可以在页面加载后旋转设备。因此,在用户代理字符串中包含它是没有意义的。
相反,您应该使用HTML和JavaScript在方向改变时更改布局。

0

大家都建议你用 JavaScript 来完成,这完全正确,但我猜你从问题中并没有看到这个选项。

你应该从 PHP 中加载足够的图片(如果不是一个愚蠢的数字,那就全部加载,毕竟它只是一个 URL 字符串),以 JSON(json_encode($array of image URL's to use))格式填充最大尺寸。然后使用 JavaScript 检测方向,并使用正确数量/布局的图像填充页面。

你将在 JavaScript 中拥有一个图像 URL 数组可供选择和动态加载。


大家好,我很乐意使用JS来完成它,但我需要在jQuery中进行一些动画效果。我不太了解JavaScript,无法像我想要的那样将它们结合起来,比如隐藏我的标题或使其变小以显示更多的图片,这是我可以使用jQuery的动画特性来实现的。 - graham
这是我的JS代码,但我需要它在纵向模式下运行:<script type="text/javascript"> $(document).ready(function(){
$('#top-header').animate({ opacity: 'hide' });
$('#top-header').animate({ opacity: 'show', //height: '+=300px' marginTop: '-150px' }, 1600).css({ 'display': 'block' });
}); </script>
- graham
为什么动画在竖屏模式下无法工作?如果只是尺寸问题,那么可以首先根据是竖屏还是横屏进行计算。 - Paystey

0

使用这段代码可能对您有用 var orient = Math.abs(window.orientation) === 90 ? 'landscape' : 'portrait';


1
请进行适当的排版,以便读者可以清楚地理解您的意思。 - The iOSDev
他正在询问如何在PHP中实现它。 - Jan Hančič

0
你是想检测设备还是设备旋转的方式?
我认为,使用Javascript或CSS检测设备方向会更容易,你有研究过这些吗?

Javascript:

<button onclick="detectIPadOrientation();">What's my Orientation?</button>

<script type="text/javascript">
    window.onorientationchange = detectIPadOrientation;
    function detectIPadOrientation () 
    {
        if ( orientation == 0 ) {
            alert ('Portrait Mode, Home Button bottom');
        }
        else if ( orientation == 90 ) {
            alert ('Landscape Mode, Home Button right');
        }
        else if ( orientation == -90 ) {
            alert ('Landscape Mode, Home Button left');
        }
        else if ( orientation == 180 ) {
            alert ('Portrait Mode, Home Button top');
        }
    }
</script>

CSS

<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css">
<link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css">

我尝试使用您的代码,但不知道如何将我的代码添加到您的代码中,当我尝试时它也没有起作用:( 您可以将我的代码与您的一起发布吗?我正在使用很棒的CSS样式表。 :) - graham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接