Получение разрешения экрана с помощью PHP

Мне нужно найти разрешение экрана экрана пользователя, который посещает мой сайт?

Вы не можете сделать это с помощью чистого 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'); }); 

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")); } ?> 

Все, что действительно важно, но должно быть куда-то. Обычно разрешение экрана не то, что вы действительно хотите. Возможно, вас больше интересует размер порта представления фактического браузера, поскольку на самом деле это страница, где отображается страница …

Непосредственно с 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>'; } ?> 

PHP – это серверный язык – он выполняется только на сервере, а полученный результат программы отправляется клиенту. Таким образом, информация о «клиентском экране» отсутствует.

Тем не менее, вы можете сообщить клиенту, что их разрешение экрана через JavaScript. Напишите небольшой скриптлет, чтобы отправить вам screen.width и screen.height – возможно, через AJAX или, скорее всего, с начальной «страницей перехода», которая находит его, затем перенаправляется на http://example.net/index.php?size= AxB

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

Используйте JavaScript ( screen.width и screen.height IIRC, но я могу ошибаться, не сделал JS в то время). PHP не может этого сделать.

Я нашел, что CSS внутри моего html внутри моего 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>'; ?> 

Это приведет к отображению заголовка меньшего размера, если экран имеет разрешение 480 пикселей или менее. Поэтому нет необходимости передавать какие-либо вары с использованием JS или аналогичных.

Вы можете попробовать RESS (RESponsive design + Server side components), см. Этот учебник:

http://www.lukew.com/ff/entry.asp?1392

Единственный способ – использовать javascript, а затем получить javascript, чтобы опубликовать его на ваш php (если вам действительно нужна серверная сторона). Это, однако, полностью упадет на его лице, если они отключат javascript.

Я не думаю, что вы можете определить размер экрана исключительно с помощью PHP, но вы можете обнаружить пользователь-агент.

 <?php if ( stristr($ua, "Mobile" )) { $DEVICE_TYPE="MOBILE"; } if (isset($DEVICE_TYPE) and $DEVICE_TYPE=="MOBILE") { echo '<link rel="stylesheet" href="/css/mobile.css" />' } ?> 

Вот ссылка на более подробный скрипт: PHP Mobile Detect

Это можно сделать легко с помощью файлов cookie. Этот метод позволяет странице проверять сохраненные значения cookie на высоту и ширину экрана (или значения высоты и ширины порта порта браузера), и если они отличаются друг от друга, он сбросит файл cookie и перезагрузит страницу. Код должен учитывать пользовательские настройки. Если упорные файлы cookie отключены, используйте файл cookie сеанса. Если это не сработает, вам нужно установить настройку по умолчанию.

  1. Javascript: проверьте, установлен ли файл cookie высотой и шириной
  2. Javascript: если установлено, проверьте, соответствует ли screen.height & screen.width (или тому, что вам нужно) текущее значение файла cookie
  3. Javascript: Если cookie не установлен или он не соответствует текущему значению, то: a. Javascript: создать постоянный или сеансовый файл cookie с именем (например) 'shw' для значения текущего screen.height & screen.width.
    б. Javascript: перенаправление на SELF с помощью window.location.reload (). Когда он перезагрузится, он пропустит шаг 3.
  4. PHP: $ _COOKIE ['shw'] содержит значения.
  5. Продолжить работу с PHP

Например, я использую некоторые общие функции cookie, найденные в Интернете. Убедитесь, что setCookie вернет правильные значения. Я поместил этот код сразу после заголовка. Очевидно, что функция должна быть в исходном файле.

 <head> <script src="/include/cookielib.js"></script> <script type=text/javascript> function setScreenHWCookie() { // Function to set persistant (default) or session cookie with screen ht & width // Returns true if cookie matches screen ht & width or if valid cookie created // Returns false if cannot create a cookies. var ok = getCookie( "shw"); var shw_value = screen.height+"px:"+screen.width+"px"; if ( ! ok || ok != shw_value ) { var expires = 7 // days var ok = setCookie( "shw", shw_value, expires) if ( ok == "" ) { // not possible to set persistent cookie expires = 0 ok = setCookie( "shw", shw_value, expires) if ( ok == "" ) return false // not possible to set session cookie } window.location.reload(); } return true; } setScreenHWCookie(); </script> .... <?php if( isset($_COOKIE["shw"])) { $hw_values = $_COOKIE["shw"]; } 

В PHP нет стандартного способа получения этой информации. Однако это возможно, если вы используете стороннее решение. 51Degrees детектор устройств для PHP обладает необходимыми свойствами:

  • $ _51d [ 'ScreenPixelsHeight']
  • $ _51d [ 'ScreenPixelsWidth']

Дает вам ширину и высоту экрана пользователя в пикселях. Чтобы использовать эти свойства, вам необходимо загрузить детектор из sourceforge . Затем вам необходимо включить следующие 2 строки в файл / файлы, где необходимо определить высоту и ширину экрана:

 <?php require_once 'path/to/core/51Degrees.php'; require_once 'path/to/core/51Degrees_usage.php'; ?> 

Где путь / to / core – путь к каталогу Core, который вы загрузили из sourceforge. Наконец, чтобы использовать свойства:

 <?php echo $_51d['ScreenPixelsHeight']; //Output screen height. echo $_51d['ScreenPixelsWidth']; //Output screen width. ?> 

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

JS:

 $.ajax({ url: "ajax.php", type: "POST", data: "width=" + $("body").width(), success: function(msg) { return true; } }); 

ajax.php

 if(!empty($_POST['width'])) $width = (int)$_POST['width']; 

решение: сделать масштабируемый веб-дизайн … (наш должен сказать правильный веб-дизайн) формирование должно быть сделано на стороне клиента, и я действительно хотел, чтобы информация передавалась на сервер, но информация по-прежнему полезна (сколько объектов на строки типа сделку), но все же веб-дизайн должен быть текучим, поэтому каждый элемент строки не следует помещать в таблицы, если только его фактическая таблица (и данные не будут масштабироваться до отдельных ячеек), если вы используете div, вы можете складывать каждый элемент рядом друг с другом и ваше окно должно «сломать» строку в нужном месте. (просто нужен правильный css)

PHP работает только на стороне сервера, а не на хосте пользователя. Используйте JavaScript или jQuery для получения этой информации и отправки через AJAX или URL (? X = 1024 & y = 640).

 <script type="text/javascript"> if(screen.width <= 699){ <?php $screen = 'mobile';?> }else{ <?php $screen = 'default';?> } </script> <?php echo $screen; ?>