Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Вы не можете сделать это с помощью чистого PHP. Вы должны сделать это с помощью JavaScript. Есть несколько статей, написанных о том, как это сделать.

По сути, вы можете установить cookie, или вы даже можете сделать Ajax для отправки информации на PHP script. Если вы используете 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"));
}
?>

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

Я нашел, что 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 или подобных.

Ответ 7

Я не думаю, что вы можете определить размер экрана только с 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" />'
    }
?>

Здесь ссылка на более подробный script: обнаружение мобильных устройств в Интернете

Ответ 8

Это очень простой процесс. Да, вы не можете получить ширину и высоту в 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>

У меня есть тест, который вы можете выполнить: http://rw-wrd.net/test.php

Ответ 9

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

Ответ 10

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'];

Ответ 11

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

  • Javascript: проверьте, установлен ли файл cookie высотой и шириной.
  • Javascript: если установлено, проверьте, соответствует ли screen.height и screen.width(или что вам угодно) текущему значению файла cookie
  • Javascript: Если cookie не установлен или он не соответствует текущему значению, то:  а. Javascript: создать постоянный или сеансовый файл cookie с именем (например,) 'shw' для значения текущего экрана screen.height и screen.width.
     б. Javascript: перенаправление на SELF с помощью window.location.reload(). Когда он перезагрузится, он пропустит шаг 3.
  • PHP: $_COOKIE ['shw'] содержит значения.
  • Продолжить с 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"];
}

Ответ 12

Самый простой способ:

$width = "<script>var windowWidth = screen.width; document.writeln(windowWidth); </script>";
$height = "<script>var windowHeight = screen.height; document.writeln(windowHeight); </script>"; 

echo 'This screen is : '.$width.' x '.$height;

Ответ 13

Полностью рабочий пример

Я не смог найти реально работающий пример PHP, чтобы "невидимо" (без параметров URL) вернуть размер экрана клиента и другие свойства серверному PHP, поэтому я собрал этот пример.

JS заполняет и отправляет скрытую форму (сценарий PHP из массива свойств JS), POST самому себе (данные теперь доступны в PHP) и возвращает данные в виде таблицы.

(Проверено в "нескольких" браузерах.)

<!DOCTYPE html>
<html>
<head>
    <title>*Client Info*</title>
    <style>table,tr{border:2px solid gold;border-collapse:collapse;}td{padding:5px;}</style>
</head>

<body>
<?php
  $clientProps=array('screen.width','screen.height','window.innerWidth','window.innerHeight', 
    'window.outerWidth','window.outerHeight','screen.colorDepth','screen.pixelDepth');

  if(! isset($_POST['screenheight'])){

    echo "Loading...<form method='POST' id='data' style='display:none'>";
    foreach($clientProps as $p) {  //create hidden form
      echo "<input type='text' id='".str_replace('.','',$p)."' name='".str_replace('.','',$p)."'>";
    }
    echo "<input type='submit'></form>";

    echo "<script>";
    foreach($clientProps as $p) {  //populate hidden form with screen/window info
      echo "document.getElementById('" . str_replace('.','',$p) . "').value = $p;";
    }
    echo "document.forms.namedItem('data').submit();"; //submit form
    echo "</script>";

  }else{

    echo "<table>";
    foreach($clientProps as $p) {   //create output table
      echo "<tr><td>".ucwords(str_replace('.',' ',$p)).":</td><td>".$_POST[str_replace('.','',$p)]."</td></tr>";
    }
    echo "</table>";
  }
?>
<script>
    window.history.replaceState(null,null); //avoid form warning if user clicks refresh
</script>
</body>
</html>

Возвращенные данные extract в переменные. Например:

  • window.innerWidth возвращается в $windowinnerWidth

Ответ 14

Быстрый ответ - нет, тогда вы, вероятно, спрашиваете, почему я не могу сделать это с помощью php. ОК, это более длинный ответ. PHP - это серверный язык сценариев, и поэтому он не имеет ничего общего с типом конкретного клиента. Тогда вы можете спросить "почему я могу получить агент браузера от php?", Потому что эта информация отправляется с начальными заголовками HTTP по запросу на сервер. Поэтому, если вы хотите, чтобы информация о клиенте не отправлялась с заголовком HTTP, вы должны использовать язык сценариев клиента, такой как javascript.

Ответ 15

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

Ответ 16

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

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

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

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

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

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

Ответ 17

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

Ответ 18

Вы можете установить ширину окна в файлах cookie, используя JS-интерфейс, и вы можете получить его в PHP:

<script type="text/javascript">
   document.cookie = 'window_width='+window.innerWidth+'; expires=Fri, 3 Aug 2901 20:47:11 UTC; path=/';
</script>

<?PHP
    $_COOKIE['window_width'];
?>

Ответ 19

Самый простой способ

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

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

?>

Ответ 20

<script type="text/javascript">

if(screen.width <= 699){
    <?php $screen = 'mobile';?>
}else{
    <?php $screen = 'default';?>
}

</script>

<?php echo $screen; ?>