Мне нужно найти разрешение экрана экрана пользователя, который посещает мой сайт?
Вы не можете сделать это с помощью чистого 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), см. Этот учебник:
Единственный способ – использовать 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 сеанса. Если это не сработает, вам нужно установить настройку по умолчанию.
Например, я использую некоторые общие функции 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 обладает необходимыми свойствами:
Дает вам ширину и высоту экрана пользователя в пикселях. Чтобы использовать эти свойства, вам необходимо загрузить детектор из 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; ?>