Php может определять IP, имя хоста, клиентский агент и т. Д. Может ли php определять размер / разрешение монитора браузера клиента?
Нет, это не возможно. PHP работает на сервере, поэтому он не может определить параметры клиента, если вы не предпринимаете конкретные шаги на стороне клиента, чтобы передать информацию скриптам PHP на сервере.
Пожалуйста, обратите внимание, что некоторые из нас, как наши браузеры, не максимизируются. Возможно, вам лучше попытаться определить размер браузера, а не разрешение экрана. Я предполагаю, что JS делать это будет очень похоже, но я действительно не знаю, что так происходит.
Кроме того, какова резолюция скрининга слепого?
Вам нужно будет использовать 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>");
Вы должны передать это до PHP-скрипта из JavaScript, как это делает большинство кода отслеживания (с прозрачным запросом изображения).
Я тоже искал это, но нашел, что ни один из этих ответов не ответил на вопрос! В самом деле, PHP не может знать разрешение экрана, поскольку он работает на стороне сервера. Поскольку эта информация не передается в переменных среды HTTP, нам нужен другой маршрут. Javascript – одна из альтернатив.
Пример ниже – это страница PHP, которая проверяет, resolution
переменная 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 URL-адрес и требуя перенаправления. Тем не менее, это может вдохновить кого-то опубликовать лучший ответ. FYI, кредит, когда кредит причитается, этот ответ был вдохновлен этим сообщением .
Я знаю, что это не лучший ответ, так что избавитесь от понижения.
<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>
Некоторым людям требуется размер браузера для мобильных devoloping. В некоторых случаях это важная информация.
Использование WURFL и WALL может обойти это, поскольку большинство мобильных телефонов не поддерживают JS.
Размер монитора не может быть получен с использованием JS, вам нужно сделать опрос 🙂
Обратите внимание, что JS может проверять размер окна браузера, но этот размер включает в себя панели инструментов пользователя, полосы прокрутки и т. Д. Реальная область рабочей области в браузере зависит от размера этих панелей инструментов.