Получить размеры экрана и окна пользователя в 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
Я нуб. Может быть, это легко сделать, но я действительно не знаю. Я много искал. Вот как я получил методы выше. Но я не мог заставить их работать на меня. Афаик, я нигде не видел решения подобной ситуации.
Спасибо :)