使用PHP获取屏幕分辨率

Rol*_*and 46 php client resolution detect server

我需要找到访问我网站的用户屏幕的屏幕分辨率?

Kyl*_*ris 55

你不能用纯PHP做到这一点.你必须使用JavaScript.有几篇关于如何做到这一点的文章.

从本质上讲,您可以设置cookie,或者甚至可以使用一些Ajax将信息发送到PHP脚本.如果你使用jQuery,你可以这样做:

jQuery的:

$(function() {
    $.post('some_script.php', { width: screen.width, height:screen.height }, function(json) {
        if(json.outcome == 'success') {
            // do something with the knowledge possibly?
        } else {
            alert('Unable to let PHP know what the screen resolution is!');
        }
    },'json');
});
Run Code Online (Sandbox Code Playgroud)

PHP(some_script.php)

<?php
// For instance, you can do something like this:
if(isset($_POST['width']) && isset($_POST['height'])) {
    $_SESSION['screen_width'] = $_POST['width'];
    $_SESSION['screen_height'] = $_POST['height'];
    echo json_encode(array('outcome'=>'success'));
} else {
    echo json_encode(array('outcome'=>'error','error'=>"Couldn't save dimension info"));
}
?>
Run Code Online (Sandbox Code Playgroud)

所有这些都是非常基本但它应该让你到处找.通常屏幕分辨率不是你真正想要的.您可能对实际浏览器的视图端口的大小更感兴趣,因为这实际上是页面呈现的位置...


小智 28

直接使用PHP是不可能的,但......

我编写这个简单的代码来保存PHP会话的屏幕分辨率,以便在图库上使用.

<?php
session_start();
if(isset($_SESSION['screen_width']) AND isset($_SESSION['screen_height'])){
    echo 'User resolution: ' . $_SESSION['screen_width'] . 'x' . $_SESSION['screen_height'];
} else if(isset($_REQUEST['width']) AND isset($_REQUEST['height'])) {
    $_SESSION['screen_width'] = $_REQUEST['width'];
    $_SESSION['screen_height'] = $_REQUEST['height'];
    header('Location: ' . $_SERVER['PHP_SELF']);
} else {
    echo '<script type="text/javascript">window.location = "' . $_SERVER['PHP_SELF'] . '?width="+screen.width+"&height="+screen.height;</script>';
}
?>
Run Code Online (Sandbox Code Playgroud)


Ada*_*ght 19

PHP是服务器端语言 - 它仅在服务器上执行,并且生成的程序输出被发送到客户端.因此,没有"客户端屏幕"信息可用.

也就是说,您可以让客户通过JavaScript告诉您他们的屏幕分辨率.编写一个小小脚本向您发送screen.width和screen.height - 可能通过AJAX,或者更可能通过找到它的初始"跳转页面",然后重定向到http://example.net/index.php?size= AXB

虽然以用户身份发言,但我更倾向于设计一个网站以流畅地处理任何屏幕分辨率.我浏览不同大小的窗口,大多数都没有最大化.

  • +1的详细说明,而不是最大化您的浏览器窗口.我的浏览器窗口通常大约800像素宽; 根据我的屏幕分辨率调整自己大小的网页是我存在的祸根! (2认同)

小智 7

您可以像下面这样检查:

if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), 'mobile') || strstr(strtolower($_SERVER['HTTP_USER_AGENT']), 'android')) {
   echo "mobile web browser!";
} else {
echo "web browser!";
}
Run Code Online (Sandbox Code Playgroud)


del*_*elp 6

我发现在我的PHP内部使用CSS我的PHP为我做了伎俩.

<?php             
    echo '<h2 media="screen and (max-width: 480px)">'; 
    echo 'My headline';
    echo '</h2>'; 

    echo '<h1 media="screen and (min-width: 481px)">'; 
    echo 'My headline';
    echo '</h1>'; 

    ?>
Run Code Online (Sandbox Code Playgroud)

如果屏幕为480px或更小,这将输出较小尺寸的标题.所以不需要使用JS或类似的传递任何变量.

  • 这并不能回答问题 (3认同)

Ric*_*h R 5

这是一个非常简单的过程。是的,您无法在PHP中获得宽度和高度。JQuery确实可以提供屏幕的宽度和高度。首先转到https://github.com/carhartl/jquery-cookie并获取jquery.cookie.js。这是使用php获取屏幕宽度和高度的示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
        <script src="js/jquery.cookie.js"></script>
        <script type=text/javascript>
            function setScreenHWCookie() {
                $.cookie('sw',screen.width);
                $.cookie('sh',screen.height);
                return true;
            }
            setScreenHWCookie();
        </script>
    </head>
    <body>
        <h1>Using jquery.cookie.js to store screen height and width</h1>
    <?php
         if(isset($_COOKIE['sw'])) { echo "Screen width: ".$_COOKIE['sw']."<br/>";}
         if(isset($_COOKIE['sh'])) { echo "Screen height: ".$_COOKIE['sh']."<br/>";}
    ?>
    </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

我有一个可以执行的测试:http : //rw-wrd.net/test.php


Web*_*Son 5

最简单的方法

<?php 
//-- you can modified it like you want

echo $width = "<script>document.write(screen.width);</script>";
echo $height = "<script>document.write(screen.height);</script>";

?>
Run Code Online (Sandbox Code Playgroud)

  • 首先我投了赞成票,但它不起作用,它只显示(回显)javascript 宽度和高度,但您无法设置 php 变量用于计算,例如在不提交页面的情况下。在显示代码后添加此内容,您就会看到。echo substr($width,0,8)."alert('hello');".substr($height,-9); (2认同)