Получить размеры экрана и окна пользователя в php при первой загрузке

Я хочу получить в PHP высоту / ширину как экрана, так и области просмотра, когда пользователь заходит на страницу.

Я пробовал разные способы, но все они вызывают другие проблемы.

Мои цели:

Получить информацию о первой загрузке (без страницы перехода, без перезагрузки).

Не изменить URL

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

Что я пробовал до сих пор:

Javascript для получения размеров области просмотра:

if(!isset($_POST['width']) || !isset($_POST['height'])) {
echo '
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
    var height = $(window).height();
    var width = $(window).width();
    $.ajax({
        type: \'POST\',
        data: {
            "height": height,
            "width": width
        },
        success: function (data) {
            $("body").html(data);
        },
    });
});
</script>
';
}

$user_width = $_POST['width'];
$user_height = $_POST['height'];

проблемы: заставляет весь php запускаться дважды, один раз при загрузке, один раз, когда он возвращает значение (второй раз примерно через 4 секунды после первого), что делает остальную часть php дурацкой ... также, делает загрузку страницы очень медленной

Поместить размеры экрана в URL:

if(isset($_SESSION['screen_width']) AND isset($_SESSION['screen_height'])){
    $user_width = $_SESSION['screen_width'];
    $user_height = $_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>';
    }

проблемы: изменяет URL (который влияет на другой код и выглядит плохо по сравнению с бессмысленными URL, которые они имеют сейчас); не возвращает размер области просмотра afaik

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

Спасибо :)

Ответы на вопрос(2)

Ваш ответ на вопрос