@barakuda1

Почему мое условие на проверку ширины неправильно работает?

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

if($width >= 769) {
//desktop
}else
if{$width < 769) {
//mobile
}


Вывожу $width, выдает 1920
Но срабатывает условие mobile.
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 4
kawabanga
@kawabanga
Потому что зеленое с холодным сравниваете.

Здесь $width - это строка
$width = "<script>document.write(screen.width);</script>";


А тут вы сравниваете
if("<script>document.write(screen.width);</script>" >= 769)


И что же вы планируете получить?

P.S. - php не знает ничего о размере экрана клиента. Это задача фронта (js&css).
В редких случаях мы можем передавать размер экрана клиента на сервер, но за последние 10 лет ни разу не сталкивался.
Ответ написан
Комментировать
SagePtr
@SagePtr
Еда - это святое
Ответ написан
Комментировать
dollar
@dollar
Делай добро и бросай его в воду.
Если в будущем у меня будет мерседес, то выдайте мне ключи от него сейчас.
Ответ написан
Rst0
@Rst0
проверку ширины можно сделать через перезагрузку страницы с параметром $_REQUEST['width'],
пример
<?php if(!isset($_REQUEST['width'])){ ?>
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8">
                <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=5.0, user-scalable=yes">

        </head>
	<body>
        <script>
           location.replace(location.protocol+'//'+location.host + location.pathname +'?width=' + document.body.offsetWidth);    
           
       </script>
        </body>
</html>

<?php }else{
 
$width = intval($_REQUEST['width']);

?>

<!DOCTYPE html>
<html>
	<head>
		<title><?php echo $width >= 769 ? 'desktop' : 'mobile';?></title>
		<meta http-equiv="content-type" content="text/html; charset=utf-8">
                <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=5.0, user-scalable=yes">
	
       <style>
                html{}
                body{    
                   display: flex;
                   align-items: center;
                   justify-content: center;
                   min-height: 100vh;
                }
                .desktop{color:green;}
                .mobile{color:red;}
       </style>
        </head>
	<body>
           <h1 class="<?php echo $width >= 769 ? 'desktop' : 'mobile';?>">
                <?php echo $width >= 769 ? 'desktop' : 'mobile';?>
        </h1>
	</body>
</html>

<?php }?>

тогда адрес будет выглядеть примерно так:
localhost:3000/width.php?width=484
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект