может ли php определить размер / разрешение монитора клиента? - PullRequest
9 голосов
/ 21 мая 2009

Php может определять IP, имя хоста, клиентский агент и т. Д. Может ли php определять размер / разрешение монитора клиента клиента?

Ответы [ 8 ]

25 голосов
/ 21 мая 2009

Нет, не могу. PHP работает на сервере, поэтому он не может определить настройки клиента, если вы не предпримете конкретные шаги на стороне клиента для передачи информации в сценарии PHP на сервере.

5 голосов
/ 21 мая 2009

Обратите внимание, что некоторым из нас нравится, что наши браузеры не развернуты. Возможно, вам лучше попытаться определить размер браузера, а не разрешение экрана. Я предполагаю, что JS, чтобы сделать то или иное, было бы очень похоже, но на самом деле я не знаю, что это так.

Кроме того, каково разрешение программы чтения с экрана у слепого?

4 голосов
/ 21 мая 2009

Вам придется использовать PHP вместе с JavaScript, как в в этом примере :

$url = $_SERVER['PHP_SELF'];

if( isset($HTTP_COOKIE_VARS["res"]) )
    $res = $HTTP_COOKIE_VARS["res"];

else {
    ?>
    <script language="javascript">
    <!--
    go();

    function go() 
    {
        var today = new Date();
        var the_date = new Date("August 31, 2020");
        var the_cookie_date = the_date.toGMTString();
        var the_cookie = "res="+ screen.width +"x"+ screen.height;
        var the_cookie = the_cookie + ";expires=" + the_cookie_date;
        document.cookie=the_cookie
            location = '<?echo "$url";?>';
    }
    //-->
    </script>
    <?php
}

//Let's "split" the resolution results into two variables
list($width, $height) = split('[x]', $res);

//Take the width and height minus 300
$tb_width = $width-300;
$tb_height = $height-300;

//Make the table
print("<table align=center border=1 width=" .$tb_width . " height=" . $tb_height . " >
    <tr><td align=center>Your screen resolution is " . $width . " by " . $height . ".<br>
    The width/height of this table is " . $tb_width . " by " . $tb_height . ".</td></tr>
    </table>");
2 голосов
/ 10 декабря 2013

Я знаю, что это не лучший ответ, так что пощадите понижение.

<script>
/*
    JAVASCRIPT IS ON TELL THE DEVELOPER#
*/
// GET BROWSER WIDTH AND HEIGHT
var bh=screen.height;
var bw=screen.width;
window.location="?doSubmit=do&js=yes&bh="+bh+"&bw="+bw+"";
</script>

<noscript>
    <!--
        JAVASCRIPT IS OFF TELL THE DEVELOPER#
    -->
    <meta http-equiv='refresh' content='0;url=?doSubmit=do&js=off&bh=off&bw=off'>

</noscript>

<?

if($_GET["doSubmit"]=="do"){

    // VARS

        $bh=$_GET["bh"];
        $bw=$_GET["bw"];
        $js=$_GET["js"];

    // PRINT HTML ?>

<table>

    <tr><td><strong>Browser Width:</strong></td><td><?=$bw;?>px</tr>
    <tr><td><strong>Browser Height:</strong></td><td><?=$bh;?>px</tr>
    <tr><td><strong>JavaScript Detection (y/n):</strong></td><td><?=$js;?></tr>

</table>
2 голосов
/ 27 ноября 2012

Я тоже искал это, но не нашел ни одного из этих ответов, которые действительно ответили на вопрос! Действительно, у PHP нет возможности узнать разрешение экрана, так как он работает на стороне сервера. Поскольку эта информация не передается в переменных среды HTTP, нам нужен другой маршрут. Javascript является одной из альтернатив.

Примером ниже является страница PHP, которая проверяет переменную resolution, передаваемую в HTTP-запросе. Если он не находит эту переменную resolution, он создает небольшой кусочек JavaScript на странице, который передает эту переменную, а также высоту и ширину в перенаправлении обратно к себе. Конечно, когда страница снова загружается после перенаправления, все переменные будут установлены, и PHP будет знать разрешение.

<?php
    if(!isset($_GET['resolution'])) {     
        echo "<script language=\"JavaScript\">     
<!--      
    document.location=\"$PHP_SELF?resolution=1&width=\"+screen.width+\"&height=\"+screen.height;     
//-->     
</script>";     
    } else {
        // Code to be displayed if resolution is detected     
        if(isset($_GET['width']) && isset($_GET['height'])) {     
            echo "Width: " . $_GET['width'] . " and Height: " . $_GET['height'] . "<br />";
        } else {     
            echo "Resolution not detected.";
        }     
    }
?>

В конце концов я нашел это довольно неудовлетворительное решение. Это работает, но это уродливо, добавляя в URL кавалеры и требуя перенаправления. Тем не менее, это может вдохновить кого-то опубликовать лучший ответ. К вашему сведению, кредит, причитающийся кредит, этот ответ был вдохновлен этот пост .

1 голос
/ 29 октября 2009

Некоторым людям требуется браузер для мобильных устройств. В некоторых случаях это важная информация.

Использование WURFL и WALL может обойти это, поскольку большинство мобильных телефонов не поддерживают JS.

0 голосов
/ 21 мая 2009

Обратите внимание, что JS может проверять размер окна браузера, но этот размер включает пользовательские панели инструментов, полосы прокрутки и т. Д. Реальная область рабочей области в браузере зависит от размера этих панелей инструментов.

0 голосов
/ 21 мая 2009

Размер монитора не может быть получен с помощью JS, вы должны сделать опрос:)

...